home *** CD-ROM | disk | FTP | other *** search
Text File | 1991-04-17 | 136.1 KB | 3,849 lines |
-
- ===============================================
-
- @(#) OKAMI SHELL VERSION 1.2 - KOMMANDO-REFERENZ
-
- ===============================================
- Stand: 30.12.90
-
-
- BITTE ERST DIE DATEIEN README UND OKAMI.DOC LESEN!
-
-
-
- Dies ist eine Referenzdatei, die man sich einmal kurz durchlesen sollte,
- um zu sehen, was die Shell alles zu bieten hat. Danach kann man sie sich
- ausdrucken und neben den Rechner legen, die einzelnen Abschnitte können
- aber auch durch die Online-Help-Funktion durch Druck auf die Help-Taste
- angesehen werden. Dazu muß der Dateiname dieser Datei in der Shellvariablen
- HELPFILE gespeichert sein.
- Zum Ausdrucken empfehle ich das Pd-Programm Idealist, das auf einem 9-Nadel-
- drucker ca. 250 Zeilen auf eine Seite drucken kann (auf einem 24-Nadel-Drucker
- noch mehr).
-
-
- Zu jedem Kommando wird die Syntax des Kommandos sowie, falls vorhanden, die
- zum Laufen des Kommandos notwendigen Dateien angegeben.
- Für die Syntaxschreibweise gilt:
- Angaben in [] (eckigen Klammern) koennen, muessen aber nicht
- angegeben sein.
- Angaben in {} (geschwungenen Klammern) koennen beliebig oft
- (auch null mal) angegeben sein.
- Von durch | (senkrechten Strich) getrennten Angaben wird
- jeweils eine erwartet.
- Numerische Werte koennen in folgender Form angegeben werden:
- 1234 entspricht der dezimalen Zahl 1234
- 01234 entspricht der oktalen Zahl 1234 (=668 dezimal)
- 0x1234 entspricht der Hex-Zahl 1234 (=4660 dezimal)
- %1011 entspricht der Binärzahl 1011 (=11 dezimal)
- !A entspricht dem Ascii-Code von A (=65 dezimal)
- Vor jedem dieser Formate kann ein Minuszeichen stehen, um eine negative Zahl
- anzuzeigen. ACHTUNG: Bei Kommandos, die Flags benutzen, wird dieses Minus-
- zeichen als Einleitung der Flags und daher die folgende Zahl als die Flags
- angesehen, was normalerweise in einem Syntaxfehler endet. Daher muß in sol-
- chen Fällen die Zahl in (einfache oder doppelte) Anführungszeichen gesetzt
- werden.
-
- Steuersequenzen, z.B. VT52-Codes, können mit dem Fluchtsymbol ^ (Dach)
- benutzt werden. Die Verwendung des Fluchtsymbols ist unter dem internen
- Kommando "echo" beschrieben. Das dort gesagte gilt auch für alle anderen
- Kommandos.
-
- Flags können einzeln, aber auch in Gruppen durch das jeweilige Kennungs-
- zeichen eingeleitet werden, z.B. sind äquivalent:
- wc -lcn
- und wc -l -c -n
-
- Dies gilt nicht, wenn die Flags aus mehr als einem Zeichen bestehen oder
- wenn zusätzliche Informationen angegeben werden, wie z.B. bei format oder
- rsconf. Außerdem erlauben einige Kommandos nicht die Zusammenfassung oder
- die Einzelschreibweise, dies ist dann jeweils angegeben.
-
- Es gibt einige Flags, die sich eingebürgert haben und bei einigen Kommandos
- (nicht bei allen) dieselbe Bedeutung haben, diese sind:
-
- -a (alle) (das Kommando tut etwas für alle in Frage
- kommenden Argumente. Bsp.: pwd, ls)
- -i (interaktiv) (das Kommando fragt den Anwender nach
- gewissen Dingen. Bsp.: rm)
- -l (lang) (gibt zusätzliche oder ausführliche Informa-
- tionen. Bsp.: ls, ver)
- -v (verbose) (das Kommando sagt, was es tut, Bsp.: format)
- -q (quiet) (das Kommando erzeugt keine Ausgabe, oder:)
- (query) (wie -i)
- -f (fast) (das Kommando umgeht Sicherheitsabfragen u.ä.,
- um so schnell wie möglich zu laufen. Bsp.:
- rm, shutdown)
-
- Achtung: Alle Angaben über Shellscripts (z.B. "Verwendung nur in Shell-
- scripts erlaubt") gelten ebenso für Shellfunktionen.
-
-
- 0) Nicht-dokumentierte Kommandos:
-
- Gibt es, na klar. Sie werden hier nicht erklärt, da sie sonst ja nicht mehr
- nicht-dokumentiert währen. Mit cmds kann man die Namen aller Kommandos heraus-
- finden, auch die der nicht-dokumentierten. Man kann sie auch benutzen, aber
- man sollte sich nicht darauf verlassen, daß sie in späteren Versionen der
- Shell noch genauso wie in der jetzigen funktionieren oder überhaupt noch vor-
- handen sind.
-
-
- 1) Interne Kommandos:
-
- Interne Kommandos werden aufgerufen, indem man am Shell-Prompt den Namen
- des Kommandos, gefolgt von den Parametern, eingibt.
-
- Rückgabewerte:
- Jedes interne Kommando gibt einen numerischen Wert zurück, der sich nach Aus-
- führung des Programms in der Shellvariablen "?" befindet. Außerdem wird
- der Rückgabewert von den Kommandos if und while benutzt.
- Normalerweise geben die Kommandos -1 zurück, wenn ein Syntaxfehler beim
- Aufruf oder ein anderer Fehler aufgetreten ist, und 0, wenn bei der Aus-
- führung keine Fehler aufgetreten sind. Daher werden die Rückgabewerte der
- internen Kommandos im folgenden nur angeführt, wenn sie von dieser Konven-
- tion abweichen.
-
-
- Folgende interne Kommandos sind implementiert:
-
-
- -----
- . - Ausführung einer Datei als Shellscript
-
- Syntax: . Dateiname
-
- Die angegebene Datei wird als Shellscript ausgeführt. Es muß der voll-
- ständige Dateiname (relativ oder absolut) angegeben werden. Die Shell-
- variablen PATH und SEXT sind ohne Wirkung.
- Beispiele:
- . $HOME\profile
- führt das Login-Script aus.
- . hallo.sh
- führt die Datei hallo.sh als Shellscript aus.
- . hallo
- führt die Datei hallo als Shellscript aus.
-
- -----
- [ - SIEHE test
-
- -----
- adr - Ausgabe von diversen Systemadressen
-
- Syntax: adr
-
- Ausgabe der folgenen Adressen:
- argv Adresse des Argumentenvektors der Shell
- Command line Adresse der Kommandozeile (Parameter)
- Environment Adresse des Environment-Strings der Shell
- VarTable Adresse der Variablen-Tabelle der Shell
- Commands Adresse der Kommandotabelle der Shell
- AdrTab Adresse der Tabelle mit den auszugebenden Adressen
- Physbase Adresse des physikalischen Bildschirms
- Logbase Adresse des logischen Bildschirms
- DTA Adresse des Disk-Transfer-Bereiches
- Phystop Physikalisches Ende des RAM-Speichers
- (Adresse des ersten nicht vorhandenen Bytes)
- Membot Unterste Adresse des verfügbaren Speichers
- Memtop Oberste Adresse des verfügbaren Speichers
- Basepage Adresse der Basepage der Shell
- Cookie Jar Die Adresse des Cookie Jars.
- _StdIn Adresse der aktuellen Eingabe-File-Struktur.
- _StdOut Adresse der aktuellen Ausgabe-File-Struktur.
- _StdErr Adresse der aktuellen Fehlerausgabe-File-Struktur.
-
- Diese Adressen sind z.T. nur für den Programmierer der Shell von Bedeu-
- tung (z.T nicht mal das). Die Inhalte der Adressen können mit memex ausge-
- lesen werden.
-
- Siehe auch: basep
- cookie
-
- -----
- backup - Sichern von Dateien auf Diskette
-
- Syntax: backup [-nNrq] [Laufwerk]
-
- Dient zum Sichern von Dateien auf Diskette. Es werden von StdIn Datei-
- namen eingelesen. Diese Dateien werden auf dem angegebenen Laufwerk oder,
- falls kein Laufwerk angegeben ist, nach A:\ gespeichert. Dabei werden alle
- benötigten Ordner angelegt.
- Alle von StdIn eingelesenen Zeilen werden als Dateinamen betrachtet, mit
- der Ausnahme von Zeilen, die mit einem Doppelkreuz (#) beginnen. Diese
- werden als Kommentarzeilen betrachtet. Leerzeilen werden ignoriert.
- Wenn auf dem Ziellaufwerk kein Platz mehr für weitere Dateien ist, fragt
- backup nach der nächsten Diskette. Die Anfrage wird durch Druck auf ENTER
- beantwortet; drückt man stattdessen ESC, wird backup abgebrochen.
- Die laufende Nummer der jeweiligen Diskette wird im Bootsektor der
- Diskette abgelegt (nur bei Disketten, also Laufwerk A: oder B:.)
- Nach dem Ende des Backups wird die Anzahl der Dateien, Bytes und benutzter
- Disketten ausgegeben.
-
- Flags:
- -n Es werden keine Daten in den Bootsektor geschrieben.
- -N Es werden keine Daten kopiert. Das ist nützlich, um
- herauszufinden, wieviele Disketten für ein Backup be-
- nötigt werden. Die Disketten müssen in der vorgesehenen
- Reihenfolge eingelegt werden, werden aber nicht beschrieben.
- Impliziert -n.
- -r Es werden keine Ordner auf dem Ziellaufwerk angelegt, alle
- Dateien landen im Wurzelverzeichnis des Ziellaufwerks.
- -q Es wird angenommen, daß die erste Diskette bereits im Lauf-
- werk eingelegt ist, daher entfällt die Frage nach dem
- Einlegen der ersten Diskette. Dies ist nützlich, wenn Daten
- statt auf eine Diskette auf eine Festplatte gesichert
- werden.
-
-
- Beispiele:
- backup <files.lst
- Aus der Datei files.lst werden Namen von Dateien gelesen,
- die auf Diskette A: gesichert werden. Die Datei files.lst
- kann Kommentarzeilen enthalten, die mit # beginnen.
-
- find d:\ *.* | backup
- sichert alle Dateien von Partition D: auf Diskette A:.
-
- ls *.c | backup -q e:\backup\source
- sichert alle C-Quelldateien vom aktuellen Directory in
- das Directory e:\backup\source. Da E: keine Diskette
- ist, werden keine Daten in den Bootsektor geschrieben.
- Es erfolgt keine Nachfrage zum Einlegen einer Diskette.
-
- find e:\ *.c | backup -N b:
- findet heraus, wieviele Disketten zum Sichern aller C-
- Quelldateien von Partition E: benötigt würden. Es wird
- Diskettenlaufwerk B: benutzt.
-
- Rückgabewert:
- -1 Aufruffehler
- sonst Anzahl der gesicherten Dateien.
-
- -----
- basename - Ermitteln des Dateinamens
-
- Syntax: basename File [Extender]
-
- Ausgabe des reinen Dateinamens ohne Laufwerk und Ordner. Wenn ein Extender
- angegeben wird und der Dateiname mit diesem Extender endet, wird der Basis-
- name ohne diesen Extender ausgegeben. Datei muß es sich nicht unbedingt um
- den 3-Zeichen-TOS-Dateitypextender handeln, sondern um eine beliebig lange
- Zeichenkette, die vom Ende des Basisnamens abgeschnitten wird.
-
- Beispiele: ergibt:
- basename d:/shell/sh.ttp sh.ttp
- basename sh.ttp sh.ttp
- basename d:/shell/sh.ttp .ttp sh
- basename d:/compiler iler comp
-
- Anmerkung: Die Arbeitsweise dieses Kommandos hängt in keiner Weise davon ab,
- ob die angegebene Datei existiert. Das gilt auch für die Kommandos dirname,
- drvname, extname und fullname.
-
- Siehe auch: dirname
- drvname
- extname
- fullname
-
- -----
- basep - Analyse der Basepage
-
- Syntax: basep [-pa] [Adresse]
-
- Mit diesem Kommando kann:
- 1) die Adresse der Basepage des Shell-Programms herausgefunden werden,
- 2) diese oder eine andere Basepage analysiert werden,
- 3) wahlweise stattdessen die Adresse der Parent-Basepage gefunden oder
- diese analysiert werden.
-
- Hierbei bedeutet "analysiert", daß die einzelnen in der Basepage enthaltenen
- Adressen und sonstigen Angaben ausgegeben werden.
-
- Wenn keine Adresse angegeben ist, wird die Basepage des aktuellen Shell-
- Programms benutzt.
-
- Bei der Analyse werden alle Angaben, auch die Längenangaben der einzelnen
- Programmsegmente, in hexadezimaler Schreibweise ausgegeben. Das interne
- Kommando num kann für die Konvertierung in dezimale Schreibweise benutzt
- werden.
-
- Flags:
- -a Wenn dieses Flag angegeben ist, wird die Analyse der Base-
- page ausgegeben. Ansonsten wird nur die Adresse ausgegeben.
- -p Wenn dieses Flag angegeben ist, wird die Parent-Basepage
- benutzt.
-
- Beispiele:
- 1) Herausfinden der aktuellen Basepage-Adresse:
- basep
-
- 2) wie 1), aber Umformung ins Dezimalsystem:
- basep | xargs num -d
-
- 3) Herausfinden der Adresse der Basepage des aufrufenden Programms:
- basep -p
-
- 4) Analyse der Basepage an Adresse 0x65A40:
- basep -a 0x65a40
- Diese Adresse kann z.B. von dem Kommando exec oder ps stammen.
-
- Siehe auch: exec
- ps
-
- -----
- bombs - Erzeugen von Bomben
-
- Syntax: bombs Anzahl
-
- Mit diesem Kommando wird die Shell mit der angegebenen Anzahl von Bomben
- beendet. Die Anzahl muß größer oder gleich 2 sein. Es erfolgt ein Sprung
- an die Adresse, die in dem entsprechenden Vektor (Adresse 4*Anzahl) ange-
- geben ist.
- Dieses Kommando kann z.B. benutzt werden, um einen Debugger oder eine Umlen-
- kung der Exception-Vektoren zu testen.
-
- -----
- break - SIEHE while
-
- -----
- cat - Anzeige von Dateien
-
- Syntax: cat [-b] {File}
-
- Kopiert Daten von StdIn oder, falls angegeben, von File, nach StdOut.
- Falls StdIn die Tastatur ist, kann die Ausgabe durch die Tastenkombination
- Ctrl D ENTER abgebrochen werden.
-
- Wenn das Flag -b angegeben ist, werden die Dateien im Binärmodus geöffnet,
- es findet also keine Übersetzung von CR/LF-Sequenzen statt. Das ist sinn-
- voll, wenn man Binärdateien wie z.B. ausführbare Programmdateien o.ä. an-
- einanderhängen will. Damit das funktioniert, sollte man dann aber auch
- das Shell-Flag u setzen (siehe "set").
-
- Bsp.:
- 1) cat test.dat
- gibt den Inhalt der Datei test.dat auf dem Bildschirm aus.
-
- 2) cat test.dat >PRT:
- druckt die Datei test.dat aus.
-
- 3) cat dat.1 dat.2 dat.3 > dat.123
- hängt die Dateien dat.1 bis dat.3 aneinander und schreibt das Ergebnis
- in die Datei dat.123.
-
- 4) set +u
- cat -b test1.prg test2.prg >test.bin
- arbeitet im Binärmodus, wodurch keine Übersetzung von CR/LF-Sequenzen in
- den Dateien stattfindet.
-
- Fehler:
- Die Verwendung von "cat >file", um Tastatureingaben in eine Datei zu schrei-
- ben, ist nicht möglich, da bei der Eingabe auch das Tastaturecho in die Datei
- umgeleitet würde.
-
- Siehe auch: raw
-
- -----
- cd - Wechsel des aktuellen Directories
-
- Syntax: cd [Pfad]
-
- Setzt das aktuelle Arbeitsverzeichnis auf $HOME oder, falls angegeben,
- auf Pfad. Pfad kann erweiterte Wildcards enthalten.
- Wenn Pfad nicht mit einem Backslash (\ oder /) beginnt oder ein entsprechendes
- Verzeichnis nicht existiert, werden die in der Shellvariablen CDPATH gespei-
- cherten Pfade nach einem entsprechenden Verzeichnis durchsucht. Das aktuelle
- Arbeitsverzeichnis wird dann auf das erste gefundene Verzeichnis eingestellt.
-
- Beispiele:
- cd
- entspricht cd $HOME
- cd e:\okami\test
- Wechsel von Laufwerk und Verzeichnis
- cd test
- Wechsel in den Ordner "test" im aktuellen Verzeichnis
- cd ..
- Wechsel ins Parent-Directory des aktuellen Verzeichnisses
- cd t*
- Wechsel in den ersten Ordner, dessen Name mit t beginnt
-
- -----
- chmod - Ändern von Dateiattributen
-
- Syntax: chmod [(+|-)cdrhsvw] File
-
- Flags: Bei Verwendung von + wird das entsprechende Flags gesetzt, bei
- Verwendung von - wird es geloescht. Die Flags bedeuten:
- c File written and closed (Archivstatus)
- d Directory (Ordner)
- r Read-Only (nur lesen)
- h Hidden (unsichtbar; nur für Dateien)
- s System File (Systemdatei)
- v Volume Lable (Diskettenname)
-
- Die Flags können beliebig kombiniert werden, allerdings geben nicht alle
- Kombinationen einen Sinn. VORSICHT!!!!
- Das Unsichtbarmachen von Ordnern ist nicht möglich. Wenn eine Datei einmal
- das Volume Label-Flag hat, kann dieses nicht mehr entfernt werden, da die
- Datei dadurch von der normalen Dateisuche (Fsfirst/next) ausgeschlossen ist.
-
- -----
- cls - Bildschirm initialisieren
-
- Syntax: cls
-
- Loescht den Bildschirm, setzt den Cursor auf die erste Spalte in der
- ersten Zeile und schaltet den Cursor auf sichtbar. Außerdem wird das
- Word Wrap angeschaltet, das dafür sorgt, daß Ausgaben, die länger sind
- als eine Zeile (z.B. bei Verwendung von ls -C) auf mehrere Zeilen ver-
- teilt werden.
-
- -----
- cmds - Ausgabe der internen Kommandos
-
- Syntax: cmds [-Ca] {Pattern}
-
- Es werden die Namen aller interner Kommandos ausgegeben, die auf die ange-
- gebenen Patterns passen. Dabei gelten die Regeln der erweiterten Wildcards
- (siehe okami.doc). Wenn kein Pattern angegeben ist, werden alle internen
- Kommandos ausgegeben.
-
- Flags:
- -C Die Kommandos werden in mehreren Spalten ausgegeben. Auf diese
- Weise passen alle Kommandos auf einmal auf den Bildschirm.
- -a Es werden außerdem die Startadressen der jeweiligen
- Funktionen ausgegeben (ja, für den Anwender ist das
- VÖLLIG uninteressant)
-
- Beispiele:
- cmds Ausgabe aller interner Kommandos
- cmds -a t* Ausgabe aller Komandos, die mit t beginnen, sowie
- die Startadressen.
- cmds [abcd]*e Ausgabe aller Kommandos, die mit a,b,c oder d beginnen
- und mit e aufhören.
- cmds | wc -l Ausgabe der Anzahl der internen Kommandos.
-
- Rückgabewert: Es wird die Anzahl der ausgegebenen Kommandos zurückgegeben.
-
- -----
- continue - SIEHE while
-
- -----
- cookie - Auslesen des Cookie-Jars
-
- Syntax: cookie [-xdn0sc] {cookie}
-
- Mit diesem Kommando kann der Cookie-Jar des Betriebssystems ausgelesen werden.
- Der Cookie-Jar wird erst ab TOS 1.6 vom Betriebssystem selber genutzt, kann
- aber (was die Okami-Shell tut) in allen früheren TOS-Versionen einfach in-
- stalliert werden.
- In dem Cookie-Jar können sich Programme mit einer Namenskennung und einer
- Versionsnummer eintragen. Die Kennung ist genau 4 Bytes lang, belegt also ge-
- nau wie die Versionenummer ein Langwort (32 bit). Die Kennung der Okami-Shell
- ist "OkSh", die Versionsnummer enthält bei Version 1.2 eine 1 im oberen und
- eine 2 im unteren Byte des ersten Wortes (ist also 0x102).
-
- Es werden alle Cookies ausgegeben, die auf die angeführten Parameter passen,
- wobei dieselben Regeln wie für die erweiterten Wildcards gelten (siehe
- okami.doc). Wenn keine Parameter angegeben sind, lautet die Defaulteinstellung
- "*", es werden also alle Cookies ausgegeben.
-
- Der Rückgabewert ist die Anzahl der so gefundenen Cookies. Das Kommando kann
- dadurch benutzt werden, um das Vorhandensein eines bestimmten Cookies nachzu-
- prüfen.
-
- Flags:
- -x Die Versionsnummer wird hexadezimal ausgegeben.
- -d Die Versionsnummer wird dezimal ausgegeben.
- -n Die Versionsnummer wird in der Form x.y ausgegeben, wobei
- x das obere und y das untere Byte des ersten Wortes darstellt.
- x und y werden dabei dezimal ausgegeben.
- Dies ist die Default-Einstellung, wenn keine anderen Flags
- angegeben sind.
- -0 Es erfolgt keine Ausgabe. Ist nützlich beim Testen, siehe
- untenstehendes Beispiel.
- -s Es wird außerdem eine Statistikangabe über freie und belegte
- Plätze im Cookie-Jar ausgegeben.
- -c Wenn dieses Flag angegeben ist, wird ein neuer Cookiejar ange-
- legt, in den die Shell sich einträgt. Dabei wird ein evtl.
- vorhandener Cookiejar überschrieben. Man sollte dieses Flag
- nur benutzen, wenn der Verdacht besteht, daß eine unzulässige
- Adresse als Basisadresse des Cookiejar eingetragen ist (z.B.
- von einem weggebombtem Programm, das keine Zeit mehr hatte,
- die Adresse zu entfernen).
- Dieses Flag sollte nur in Notfällen angewandt werden. Wenn
- ein früheres Programm, von dem aus die Shell gestartet wurde,
- einen Cookiejar anlegt und mit cookie -c diese Adresse ver-
- ändert wird, das Programm das aber nicht bemerkt, kann das
- zum Absturz dieses Programmes führen, wenn es versucht, den
- betreffenden Speicherbereich wieder freizugeben. (Die Okami-
- Shell ist gegen solche Vorfälle geschützt.)
-
- Es kann nur eins der Flags x, d, n angegeben werden. Wenn mehrere dieser Flags
- angegeben sind, gilt nur das zuerst stehende.
-
- Beispiele:
- cookie
- Ausgabe aller installierten Einträge.
- cookie -s [A-Z]*
- Ausgabe aller Einträge, die mit einem Groß-
- buchstaben beginnen. Außerdem wird die Sta-
- tistik ausgegeben.
- cookie -x OkSh
- Ausgabe des Okami-Cookies in hexadezimal.
- if cookie -0 MiNT
- then
- echo MiNT ist installiert.
- else
- echo MiNT ist nicht installiert.
- fi
- Findet heraus, ob Mint installiert ist. Das
- cookie-Kommando erzeugt in dieser Form keine
- Ausgabe.
-
- Rückgabewert: -2, wenn kein Cookie-Jar installiert ist (was nicht geschehen
- dürfte), -1 bei einem Syntaxfehler, sonst die Anzahl der gefundenen Cookies.
-
- Die Basisadresse des aktuellen Cookie-Jars kann mit dem Kommando "adr" er-
- mittelt werden.
-
- -----
- cp - Kopieren von Dateien
-
- Syntax: cp Source Dest
-
- Kopiert die Datei Source in die Datei Dest. Falls bereits vorhanden, wird
- Dest überschrieben. Falls Dest der Name eines existierenden Ordners ist,
- wird Source nach Dest\`basename Source` kopiert.
-
- Beispiele:
- 1) cp msh.tos msh.prg (Kopieren einer Datei)
- 2) cp okami\sh.ttp d:\shell (Kopieren in einen Ordner unter
- Beibehaltung des Dateinamens; erzeugt
- wird d:\shell\sh.ttp)
-
- -----
- crypt - Ver- und Entschlüsseln von Daten
-
- Syntax: crypt [Schlüssel]
-
- crypt liest Daten von StdIn, verschlüsselt sie mit dem angegebenen Schlüssel
- und schreibt das Ergebnis nach StdOut. Wenn kein Schlüssel angegeben ist, wird
- der Schlüssel des vorigen crypt-Aufrufes benutzt (was allerdings nicht allzu
- zuverlässig funktioniert, man sollte daher immer einen Schlüssel angeben).
- Durch erneutes Verschlüsseln werden die Daten wieder entschlüsselt.
-
- Benutzt wird der Verschlüsselungsalgorithmus von MicroEmacs, was bedeutet, daß
- die Verschlüsselung kompatibel ist zu allen MicroEmacs-Versionen auf allen
- Rechnern. Die in der Okami-Shell verwendete Verschlüsselungsroutine stammt
- aus den Quellen von MicroEmacs 3.9+.
-
- Der Verschlüsselungsalgorithmus ist so angelegt, daß druckbare Ascii-Zeichen
- wieder in solche verschlüsselt werden. Steuerzeichen (Ascii<32 oder >127)
- werden nicht verändert. Dadurch ist die Verschlüsselung einer reinen Ascii-
- Datei wieder eine reine Ascii-Datei.
-
- Beispiele:
- crypt xyz <secret.txt >secret.crp
- verschlüsselt die Datei secret.txt und speichert das Ergebnis
- in der Datei secret.crp. Es wird der Schlüssel "xyz" benutzt.
- crypt xyz <secret.crp
- entschlüsselt secret.crp und gibt das Ergebnis auf dem Bild-
- schirm aus.
- crypt abc <secret.txt | crypt abc
- hat dieselbe Wirkung wie "cat secret.txt".
- ls -la *.c | crypt dubidu | hd
- erzeugt eine Dateiliste, verschlüsselt sie mit dem Schlüssel
- "dubidu" und fertigt von dem Ergebnis ein Hexdump an.
- crypt abc secret.txt
- verschlüsselt die Tastatureingabe anhand des Schlüssels
- "abc secret.txt".
-
- -----
- cursor - Konfiguration des VT52-Cursors
-
- Syntax: cursor [(+|-)bv] [Rate]
-
- Beim Aufruf ohne Parameter wird die aktuelle Blinkrate nach StdOut ge-
- schrieben.
- Wenn Rate angegeben wird, wird die Blinkrate auf Rate gesetzt. Werte für
- Rate: 30 normal, <30: schneller, >30: langsamer, 0: nicht blinkend.
- Flags: +v der Cursor wird sichtbar.
- -v der Cursor wird unsichtbar.
- +b der Cursor wird blinkend.
- -b der Cursor hört auf zu blinken (unabhängig von Rate).
-
- Beispiel:
- Der Cursor soll während der Ausführung eines Programms schneller blinken
- und dann auf den alten Wert zurückgestellt werden.
-
- ALT=`cursor`
- cursor 5
- ..................... (das auszuführende Programm)
- cursor $ALT
- ALT=
-
- Rückgabewert: der Ascii-Code des ersten eingegebenen Zeichens.
-
- Siehe auch: keyb
- mouse
- scr
-
- -----
- date - Ausgabe der Systemzeit
-
- Syntax: date [+Fmt]
-
- Datum und Uhrzeit werden nach StdOut geschrieben.
- Wenn ein mit einem Pluszeichen eingeleiteter Formatstring angegeben ist,
- wird das Datum in dem angegebenen Format ausgegeben. In dem Formatstring
- können Formatelemente enthalten sein, die folgendes bedeuten:
-
- %d Nummer des Tages im Monat (00...31)
- %h Abkürzung des Monatsnamens (Jan...Dec)
- %H Stunde (00...23)
- %m Nummer des Monats (00...12)
- %M Minute (00.59)
- %n erzeugt einen Zeilenvorschub
- %S Sekunde (00...59)
- %t erzeugt einen Tabulatorvorschub
- %y Jahr zweistellig (00...99)
- %Y Jahr vierstellig (1900...????)
- %% erzeugt ein Prozentzeichen
-
- Alle anderen Zeichen werden direkt ausgegeben.
-
- Wenn kein Formatstring angegeben ist, lautet die Voreinstellung:
- date +%d.%m.%Y %H:%M:%S
-
- Beispiele:
- Eingabe... Ausgabe... (z.B.)
- date 06.09.1990 21:38:07
- date +Das Jahr ist %Y Das Jahr ist 1990
- date +%h. %dth, %Y Sep. 06th, 1990
- date +Hallo, wie gehts Hallo, wie gehts
-
- -----
- df - Anzeige der Plattenbelegung
-
- Syntax: df [-dnmb] {Drive}
-
- Gibt Informationen über freie und belegte Bytes und Cluster auf allen
- angemeldeten Laufwerken oder, wenn Drive angegeben ist, nur von Laufwerk
- Drive. Nur der erste Buchstabe von Drive ist relevant, d.h. für Informa-
- tionen über Laufwerk A: genügt: df a
-
- Flag: -d Es werden für jedes Laufwerk folgende Daten ausgegeben:
- Anzahl der Cluster,
- Anzahl der Sektoren pro Cluster,
- Anzahl der Bytes pro Sektor,
- Anzahl der freien Cluster.
- Dies entspricht der Rückgabe der Gemdos-Funktion Dfree.
- -n Es wird keine Überschrift ausgegeben.
- -m Es wird eine Liste der angeschlossenen Laufwerke ausge-
- geben. -n und -d sind ohne Wirkung.
- -b Wenn nur ein Laufwerk angeschlossen ist, das sowohl als
- A: als auch als B: angesprochen werden kann, werden, wenn
- dieses Flag angegeben ist, bei der Übersicht (auch bei -m)
- die Angaben von A: und von B: ausgegeben (wenn -m nicht
- angegeben ist, ist also ein Diskettenwechsel nötig). Wenn
- -b nicht angegeben ist, werden, wenn nur ein Disketten-
- laufwerk vorhanden ist, keine Angaben über Laufwerk B:
- ausgegeben (auch nicht bei -m).
-
- Rückgabewert: (nur für df -m)
- -1 Aufruffehler.
- sonst Anzahl der ausgegebenen Laufwerke.
-
- -----
- dirname - Ermitteln des Pfades
-
- Syntax: dirname file
-
- Es wird der Pfad der Datei ausgegeben.
- Bsp: dirname a:\okami\sh.ttp ergibt a:\okami.
-
- Siehe auch: basename
- drvname
- extname
- fullname
-
- -----
- do - SIEHE while
-
- -----
- done - SIEHE while
-
- -----
- drive - Festlegen und Auslesen der Laufwerksbezeichnungen
-
- Syntax: drive ["Drive {Drive}" [String]]
-
- Mit diesem Kommando kann jedem Laufwerk eine Bezeichnung zugeordnet werden.
- Diese Bezeichnung wird z.B. von dem internen Kommando df ausgegeben.
- Wenn keine Parameter angegeben sind, werden alle vorhandenen Bezeichnungen
- ausgegeben.
- Wenn nur ein Parameter (d.h. ein einziges Wort, ggfs. in doppelten Anführungs-
- zeichen) angegeben ist, so wird jeder Buchstabe dieses Wortes als Laufwerk be-
- trachtet und die Bezeichnung dieses Laufwerks ausgegeben. Zeichen außer A bis
- Z und a bis z werden dabei ignoriert.
- Wenn ein String ausgegeben ist, wird dieser jedem der angegebenen Lauf-
- werke als Laufwerksbezeichnung zugeordnet.
-
- Beispiele:
- 1) Ausgabe aller Laufwerksbezeichnungen:
- drive
-
- 2) Ausgabe der Bezeichnung von Laufwerk A:
- drive A:
- oder
- drive a
-
- 3) Ausgabe der Bezeichnungen der Laufwerke A,C und G:
- drive acg
- oder
- drive "A: C: G:"
-
- 4) Setzen der Bezeichnung "Diskette" für Laufwerk A:
- drive a Diskette
-
- 5) Setzen der Bezeichnung "Platte" für Laufwerke C bis F:
- drive cdef Platte
- oder
- drive "C D E F" Platte
-
- Eine weitere Möglichkeit, die Laufwerksbezeichnungen zu initialisieren,
- ist das interne Kommando rdti, das die Bezeichnungen direkt aus der
- desktop.inf-Datei lädt.
-
- -----
- drvname - Ermitteln des Laufwerks
-
- Syntax: drvname file
-
- Es wird der Name des Gerätes von file ausgegeben.
- Bsp: drvname a:\okami\sh.ttp ergibt a:.
-
- Siehe auch: basename
- dirname
- extname
- fullname
-
- -----
- echo - Ausgabe eines Strings
-
- Syntax: echo String
-
- Schreibt String nach StdOut. String kann leer sein, d.h. echo ohne Para-
- meter schreibt eine Leerzeile nach StdOut.
- In dem String sind folgende Sonderzeichen erlaubt:
- ^n erzeugt ein Newline-Zeichen (in C: '\n')
- ^t erzeugt ein Tabulator-Zeichen (in C: '\t')
- ^ooo wobei ooo eine dreistellige Oktalzahl ist: erzeugt das Zeichen
- mit dem Ascii-Code ooo.
- Beipiel: echo ^033pHallo^033q schreibt Hallo in invertierter Schrift.
- ^; erzeugt ein Semikolon, das nicht als Trenner von Kommandos wirkt.
- Siehe unten.
- ^>
- ^<
- ^|
- ^` erzeugen analog dazu Größer-, Kleiner-, Pipe- und Accent Grave-Zei-
- chen, die nicht die Ein/Ausgabeumleitung bzw. Command Substitution
- bewirken.
- ^c am Ende des Strings verhindert den Zeilenvorschub, d.h. der Cursor
- bleibt am Ende der Zeile.
- ^x wobei x ein beliebiges Zeichen ausser n, t, c, 0..7 ist: erzeugt
- das Zeichen x. Dies ist nuetzlich zum Beenden von Variablenauf-
- rufen. Beispiel:
-
- VAR=Halli
- echo $VARHallo gibt den Wert der Variable VARHallo aus
- echo $VAR^Hallo gibt die Ausgabe HalliHallo.
-
- ^^ erzeugt ein Hoch-Zeichen.
-
- Achtung: Whitespace-Zeichen wie ^t und ^n müssen in doppelten Anführungs-
- zeichen (") stehen, um wirksam zu werden.
-
- Diese Sonderzeichen gelten nicht nur bei der Angabe von Parametern des echo-
- Kommandos, sondern für alle Kommandos.
-
- Das Hoch-Zeichen hat also die Funktion, die im herkoemmlichen UNIX-"echo"
- der Backslash hat. Unter TOS wird der Backslash allerdings (in MS-DOS-
- Konvention) als Trennzeichen zwischen Pfad(en) und Dateinamen benutzt
- (wofür es in UNIX den normalen Slash gibt). Daher wird in der Okami-Shell
- der Backslash durch das Hoch-Zeichen ersetzt. Deswegen muß man in der
- Okami-Shell darauf verzichten, das Hoch-Zeichen anstelle des Pipe-Symbols
- (|) zu benutzen, was in Unix teilweise üblich ist.
- (Fazit: Es ist nicht leicht, MS-DOS und Unix unter einen Hut zu bringen,
- und TOS ist eine unmögliche Mischung von beidem)
-
- Beispiele:
-
- 1) Ausgabe des aktuellen Directories:
- echo Das aktuelle Directory ist $CWD
-
- 2) Ausgabe von VT52-Sequenzen:
- echo ^033e schaltet den Cursor ab
- echo ^033H setzt den Cursor auf Home-Position etc.
-
- 3) Ausgabe eines Semikolons:
- echo Hallo ; ls -l schreibt "Hallo" und führt das Kommando
- "ls -l" aus.
- echo Hallo ^; ls -l schreibt "Hallo ; ls -l".
-
- 4) Benutzung der Sonderzeichen in anderen Shellkommandos: Einstellen eines
- Shellprompts, das aus dem String "Eingabe: >" in invertierter Schrift
- besteht; vor jedem Prompt soll ein Signalton erzeugt werden.
- PS1="^007^033pEingabe: ^>^033q"
-
- -----
- else - SIEHE if
-
- -----
- errcode - Analyse von Fehlernummern
-
- Syntax: errcode {Fehlernummer|errno}
-
- errcode liefert zu einer Bios-, XBios- oder Gemdos-Fehlernummer einen er-
- klärenden Text. Als Fehlernummer kan jede beliebige Zahl oder das Wort
- "errno" angegeben sein, in letzterem Fall wird der Wert der internen Fehler-
- variablen errno benutzt. Fehlernummern können positiv oder negativ angegeben
- werden; da das Betriebssystem nur negative Fehlernummern benutzt, werden posi-
- tive Nummern negiert. Die Ausgabe hat die Form
- Nummer: Text
- Die Nummer wird dezimal ausgegeben und entspricht dem jeweiligen Parameter
- oder dem Inhalt von errno. Der Text ist eine Kurzdefinition der Nummer. Bei
- einer unbekannten Nummer lautet der Text "???".
- Die Voreinstellung, wenn keine Parameter angegeben sind, lautet "errno".
-
- -----
- exec - Ausführen einer Datei als Binärprogramm
-
- Syntax: exec [-(l|b)g] Dateiname {Parameter}
- oder exec -x Dateiname Basepage-Adresse
-
- Dient zum Laden oder Starten einer Datei als Binär-Programmdatei. Entspricht
- der Gemdos-Funktion "Pexec".
- Es muß der vollständige Dateiname (relativ oder absolut) angegeben werden.
- Die Shellvariablen PATH und XEXT sind ohne Wirkung. Die Shellvariable GEXT
- entscheidet, ob das Programm als GEM-Programm starten soll. Wenn das Flag -g
- angegeben ist, wird das Programm nicht über die Shellfunktion gemexec ausge-
- führt, auch wenn der Extender in $GEXT aufgeführt ist. Dies ist die Art und
- Weise, mit der gemexec Programme ausführt.
-
- Achtung: Wenn Flags angegeben sind, so müssen sie zu Beginn, also vor dem
- Dateinamen stehen und dürfen nicht durch Leerzeichen getrennt sein.
-
- Beispiele:
- 1) exec datei.ttp p1 p2 p3
- lädt und startet die Datei datei.ttp im aktuellen Verzeich-
- nis. Der String "p1 p2 p3" wird als Parameterzeile über-
- geben.
- 2) exec datei.prg
- Wenn der Extender .prg in der Shell-Variablen GEXT gespeichert
- ist, wird die Datei datei.prg über die Shellfunktion gemexec
- ausgeführt, ansonsten wird sie geladen und gestartet.
- 3) exec -g datei.prg
- Die Datei datei.prg wird geladen und gestartet, auch wenn der
- Extender .prg in GEXT gespeichert ist. Die Funktion gemexec
- wird also nicht aufgerufen.
- 4) exec datei.prg -g
- wie 2), aber es wird die Zeichenkette "-g" an das Programm
- übergeben.
- 5) exec -l datei.ttp p1 p2 p3
- Die Datei wird geladen. Die Startadresse der Basepage des
- Programms wird in hexadezimaler Schreibweise auf den Bild-
- schirm geschrieben. Der String "p1 p2 p3" wird als Para-
- meterzeile in die Basepage eingetragen. Die Adresse der
- Basepage kann mit exec -x oder dem Kommando basep weiter-
- verarbeitet werden.
- 6) exec -b datei.ttp p1 p2 p3
- wie 2), aber es wird die Basepage des Programms erzeugt.
- 7) exec -x datei.ttp 0x65abc
- Die zuvor mit exec -l geladene Datei datei.ttp wird ge-
- startet. exec -l sollte die Ausgabe "0x65ABC" erzeugt ha-
- ben.
-
- VORSICHT: Wenn bei der Verwendung von exec -x eine falsche Adresse angege-
- ben wird, ist ein Absturz der Shell möglich. Es sollte nur eine Adresse
- verwendet werden, die zuvor mit exec -l ermittelt wurde.
-
- Siehe auch: basep
- gemexec
-
- -----
- exit - Beenden der Shell oder eines Shellscripts
-
- Syntax: exit
-
- Im Dialogmodus: beendet die Shell. Hat dieselbe Wirkung wie ein Druck auf
- Ctrl V in der Kommandoeingabe.
- Nach einem exit wird folgendes getan:
- 1) ein evtl. mit trap definiertes Kommando wird ausgeführt.
- 2) wenn gon eingegeben worden ist, aber noch kein goff, wird goff aufgeru-
- fen.
- 3) die Speicherbereiche der Shell-Variablen werden freigegeben.
- 4) die Speicherbereiche der Tastatur-History werden freigegeben.
- 5) der für getscr/putscr reservierte Speicherbereich wird freigegeben.
- 6) ein evtl. residentes Helpfile wird freigegeben.
- 7) die Speicherbereiche der Shellfunktionen werden freigegeben.
- 8) die Speicherbereiche der Laufwerksbezeichnungen werden freigegeben.
- 9) die Speicherbereiche der Tastendefinitionen werden freigegeben.
- 10) wenn das Shellflag s gesetzt ist, wird das aktuelle Verzeichnis in die
- Datei $HOME\wdir gespeichert und diese Datei unsichtbar gemacht.
- 11) die DTA wird auf den Zustand vor dem Start der Shell zurückgestellt.
- 12) der Eintrag im Cookiejar wird entfernt und ggfs. der Speicherbereich des
- Cookiejars freigegeben.
- 13) alle evtl. noch offenen Umleitungsdateien werden geschlossen.
- 14) der Speicherbereich der Enviromnent-Stringpointer wird freigegeben.
- 15) das Programm wird beendet.
-
- Wenn dieses Kommando in einem Shellscript steht, wird nur das Shellscript
- beendet. Es wird keine der oben angeführten Aktionen durchgeführt.
-
- -----
- export - Markieren von Shell-Variablen für das Environment
-
- Syntax: export [[-] {Variable}]
-
- Alle als exportiert markierten Shellvariablen werden beim Start eines
- Binärprogrammes als Environment in die Basepage des neuen Programmes ein-
- getragen. Dadurch ist es möglich, eine Umgebung zu schaffen, die beim
- Start weiterer Programme erhalten bleibt.
- Beim Aufruf ohne Parameter wird eine Liste aller exportierter Variablen
- ausgegeben.
- Beim Aufruf mit den Namen von mindestens einer Shellvariablen werden alle
- angegebenen Variablen als exportiert markiert. Wenn Variablen angegeben
- werden, die noch nicht existieren, so werden diese mit einem leeren Wert
- angelegt und exportiert.
- Die Namen der Variablen können dabei im Format der erweiterten Wildcards
- angegeben werden, z.B. "export a*" exportiert alle Variablen, deren Name
- mit a beginnt. Näheres siehe okami.doc.
-
- Flag: - Bei den angegebenen Variablen wird die Exporiert-Markierung
- gelöscht. Damit können Variablen aus dem Environment ent-
- fernt werden.
-
- Beispiel:
- PS1="Eingabe:" Ändern des Shell-Prompts
- export PS1 Übernahme von PS1 ins Environment
- sh Wieder-Aufruf der Shell (Subshell)
- echo PS1 Es erscheint "Eingabe:", da die
- Variable PS1 aus dem Environment
- eingestellt wurde.
- exit Beenden der aufgerufenen Subshell.
- export - PS1 Entfernen von PS1 aus dem Environm.
-
- Siehe auch: readonly
- Zum Format des Environments siehe okami.doc.
-
- -----
- extname - Ermitteln des Dateinamen-Extenders
-
- Syntax: extname filename
-
- Der Extender des angegebenen Filenamen wird nach StdOut geschrieben (incl.
- dem Punkt vor dem Extender). Wenn der Dateiname keinen Extender hat, wird
- nur ein Zeilenvorschub ausgegeben.
- Dies ist eine reine Stringfunktion, das Ergebnis ist unabhängig von der
- Einstellung des Shell-Flags l (siehe set) und davon, ob die angegebene Datei
- existiert oder nicht.
-
- Beispiele:
- extname d:/shell/sh.ttp erzeugt die Ausgabe ".ttp".
- extname profile erzeugt einen Zeilenvorschub.
- EXT=`extname hallo.txt` einlesen in eine Variable.
-
- Siehe auch: basename
- dirname
- drvname
- fullname
-
- -----
- false - Rückgabe von 0
-
- Syntax: false
-
- Dieses Kommando gibt immer eine 0 zurück. Es wird normalerweise mit while
- oder if verwendet.
-
- Beispiel: Ausblenden eines Teiles eines Shellscripts. Durch "true" anstelle
- von "false" kann der Teil wieder aktiviert werden.
-
- if false
- ............. (irgendwelche Kommandos)
- fi
-
- Siehe: if
- while
- true
-
- -----
- fcts - Liste der Shellfunktionen
-
- Syntax: fcts
-
- Es wird eine Liste aller Shellfunktionen ausgegeben. Zu jeder Funktion er-
- scheint eine Zeile der Form:
-
- 365 hallo()
-
- Die Zahl ist die Größe der Funktion in Bytes.
- Nach der Liste wird eine Statistik ausgegeben, die folgende Angaben umfaßt:
- Summe der Größen aller Funktionen,
- Anzahl der Funktionen,
- Maximalanzahl der zu definierenden Funktionen,
- prozentuelle Belegung der Funktionstabelle.
-
- -----
- fgrep - SIEHE grep
-
- -----
- fi - SIEHE if
-
- -----
- find - Suchen von Dateien
-
- Syntax: find Startdirectory Suchmaske
-
- Findet alle Dateien ab dem angegebenen Startdirectory, die auf die ange-
- gebene Suchmaske passen. Es wird rekursiv in allen Ordnern gesucht.
-
- Beispiel:
- 1) Ausgabe aller Shellscripts, die unter dem Home-Directory liegen:
- find $HOME *.sh
-
- 2) Listen aller Dateien, die auf einer Festplattenpartition liegen:
- find c:\ *.*
-
- 3) Listen aller C-Quelldateien ab dem aktuellen Directory:
- find . *.c
-
-
- Die Verwendung dieses Kommandos ist nützlich mit Kommandos, die von ihrer
- Eingabe Dateinamen einlesen (z.B. backup). In Verbindung mit xargs können
- auch andere Kommandos für die entsprechenden Dateien aufgerufen werden.
-
- -----
- fsel - eine Datei mit der Fileselect-Box auswählen
-
- Syntax: fsel [Pfad [Default [Variable]]]
-
- Es wird die AES-Fileselect-Box aufgerufen, um eine Datei auszuwählen,
- deren Name nach StdOut geschrieben wird. Damit dieser Aufruf funktioniert,
- muß die Shell als GEM-Applikation angemeldet werden. Dies geschieht mit
- dem Kommando gon, das vor fsel aufgerufen werden muß.
-
- In Pfad kann der Suchpfad und das Suchmuster der darzustellenden Dateien
- angegeben werden. In Default kann der als ausgewählt voreinzustellende
- Dateiname angegeben werden. Wenn Pfad oder Default nicht angegeben sind,
- lautet die Voreinstellung:
-
- Pfad = ".\*.*" (alle Dateien im aktuellen Directory)
- Default = "" (keine Voreinstellung)
-
- Wenn der Anwender die Abbruch-Taste der Fileselect-Box anwählt, gibt fsel
- eine 0 zurück, ansonsten eine 1. Dieser Rückgabewert kann in der Shell-
- variablen "?" abgefragt werden.
- Wenn als dritter Parameter eine Variable angegeben ist, wird der Rück-
- gabewert (0 bei Abbruch, 1 sonst) auch in dieser Variablen abgelegt.
- Wenn dieser Parameter, nicht aber der zweite benutzt wird (weil keine Vor-
- einstellung gewünscht ist), muß der zweite Parameter . (Punkt) oder ""
- (zwei doppelte Anführungszeichen) lauten.
-
- Beispiele:
- gon muß immer zuerst kommen
- fsel Auswahl aus allen Dateien im aktuellen Dir.
- fsel *.c Auswahl aus allen C-Dateien
- fsel e:\shell\*.c Auswahl aus den C-Dateien in e:\shell
- a=`fsel *.c` Einlesen in eine Variable
- echo $? Ausgabe von 0, falls Abbruch, 1 sonst
- fsel *.c sh.c Var
- echo $Var Ergebnis in eine Variable speichern
-
- Da die Fileselect-Box den von ihr benutzten Bildschirmbereich nicht wieder
- restauriert, speichert fsel den gesamten Bildschirm vor dem Aufruf der
- Fileselect-Box ab. Daher müssen beim Aufruf von fsel mindestens 32000
- Bytes an freiem Speicher verfügbar sein.
-
- Rückgabewert:
- 1 Abbruch angewählt.
- 0 Ok angewählt.
-
- -----
- fullname - Ermitteln des absoluten Dateinamens
-
- Syntax: fullname file
-
- Ermittelt den vollen, absoluten Dateinamen der angegebenen Datei. Der abso-
- lute Dateiname ist von dem Format
- Laufwerk ":\" Pfad "\" Dateiname
- z.B. "d:\shell\sh.ttp". Es ist ohne Bedeutung, ob eine Datei mit dem ange-
- gebenen Namen existiert.
-
- Beispiele: Es sei D: das aktuelle Laufwerk, d:\shell das aktuelle Directory
- von Laufwerk D: und c:\compiler\cc das aktuelle Laufwerk von Laufwerk C:.
-
- fullname von... ergibt...
-
- c:\files\hallo.txt c:\files\hallo.txt
- c:test.c c:\compiler\cc\test.c
- sh.ttp d:\shell\sh.ttp
- \sh.ttp d:\sh.ttp
- bin\ship.exe d:\shell\bin\ship.exe
-
- Siehe auch: basename
- dirname
- drvname
- extname
-
- -----
- gemexec - Shellfunktion zum Starten von GEM-Programmen
-
- Syntax: Programmname {Parameter}
-
- Bei gemexec handelt es sich um eine Shellfunktion, die nicht direkt vom Be-
- nutzer, sondern von der Shell selber aufgerufen wird. Der Sinn der Sache ist,
- manche Programme, insbesondere GEM-Programme, unter besonderen Bedingungen
- aufzurufen. Wenn ein GEM-Programm aufgerufen wird, soll z.B. vorher der Bild-
- schirm gelöscht, der Cursor ab- und die Maus eingeschaltet werden, und nach
- dem Ende des Programms soll der Bildschirm wieder gelöscht werden. Um diese
- Prozedur möglichst flexibel und vom Anwender konfigurierbar zu gestalten, wer-
- den GEM-Programme (das sind per Definition alle externen Kommandos, deren
- Extender in der Shellvariablen GEXT gespeichert sind) über die Shellfunktion
- gemexec ausgeführt. Diese Funktion kann alle weiteren Aktionen durchführen und
- ist auch dafür verantwortlich, daß das Programm überhaupt gestartet wird.
-
- Nach dem Start der Shell wird die Funktion folgendermaßen initialisiert:
-
- gemexec()
- {
- _=$0 $*
- cls
- cursor -v
- exec -g $_
- cls
- _=
- }
-
- Beim Aufruf der Funktion gemexec enthält die Shellvariable $0 nicht den Namen
- der Funktion, sondern den vollständigen Pfadnamen des aufzurufenden Programms.
- Die Shellvariable $* enthält die zu übergebenen Parameter. Die Funktion kann
- kann vom Anwender beliebig verändert werden, aber um das betreffende Programm
- ordnungsgemäß aufzurufen, sollte sie zumindest folgendes tun:
-
- 1) Speichern von $0 und $* in einer Shellvariablen, hier: _
- 2) Durchführung aller Aktionen vor Programmstart, hier: cls und
- cursor -v (Bildschirm löschen und Cursor abschalten).
- 3) Aufruf des Programms mit dem Kommando "exec -g $_"
- Anstelle von $_ kann die in 1) benutzte Variable, aber
- auch andere Werte stehen.
- ACHTUNG: Beim Aufruf von exec muß UNBEDINGT das Flag -g angegeben
- werden!!!!! Ansonsten wird exec die Funktion gemexec nochmal mit
- denselben Parametern aufrufen => infinite Rekursion.
- 4) Die Freigabe der Variablen (hier: _) ist nicht unbedingt notwendig,
- da sie immer wieder verwendet wird.
-
- Die Funktion gemexec kann wie jede Shellfunktion programmiert werden, was be-
- deutet, daß sie auch Kontrollstrukturen wie if und while beinhalten kann. Sie
- kann den in $0 übergebenen Programmnamen mit basename und extname analysieren
- und entsprechende Operationen durchführen. Sie muß nicht unbedingt das Pro-
- gramm, daß in $0 übergeben wird, ausführen; dadurch ist es möglich, etwas
- völlig anderes als ein Programm auf diese Weise aufzurufen.
- Das folgende Beispiel zeigt, wie man das "Applikation anmelden" des Desktop
- auf diese Weise simulieren kann. Es macht alle Dateien mit Extender .gfa und
- .c ausführbar. Beim Ausführen einer .gfa-Datei wird der GFA-Basic-Interpreter,
- beim Ausführen einer .c-Datei der C-Compiler aufgerufen. Alle anderen Programme
- werden wie üblich ausgeführt. Wichtig dabei ist, daß die Extender .gfa und .c
- sowohl in XEXT als auch in GEXT aufgeführt werden.
-
- XEXT=$XEXT,.gfa,.c
- GEXT=$GEXT,.gfa,.c
- gemexec()
- {
- _=$0 $*
-
- # Extender ermitteln, Flag setzen
- f=0
- e=`extname $_`
-
- # GFA-Basic?
- if [ $e = .gfa ]
- then
- f=1
- exec -g d:/gfabasic/gfabasic.prg $_
- fi
- # C-Source?
- if [ $e = .c ]
- then
- f=1
- exec -g d:/compiler/cc.ttp $_
- fi
- # Weder-noch, also normal ausführen
- if [ $f = 0 ]
- then
- # wie das Default-gemexec
- cls
- cursor -v
- exec -g $_
- cls
- fi
-
- # Variablen freigeben
- e=
- f=
- _=
- }
-
- Die Benutzung des Flags $f entscheidet darüber, ob das Programm am Ende doch
- noch mit exec -g aufgerufen wird.
-
- Die folgende gemexec-Funktion kann benutzt werden, um nach dem Ende eines GEM-
- Programms den Bildschirm wieder so herzustellen, wie er vor dem Aufruf war.
- Dazu werden die internen Kommandos getscr und putscr sowie die VT52-Sequenzen
- zum Speichern und Wiederherstellen der Cursorposition benutzt. Dabei werden
- allerdings 32000 Bytes zum Speichern des Bildschirminhaltes belegt.
-
- gemexec()
- {
- # Programmname und Parameter merken
- _=$0 $*
- # Cursorposition speichern
- echo ^033j^c
- # Bildschirminhalt speichern
- getscr
- # Bildschirm löschen und Cursor unsichtbar
- cls ; cursor -v
- # das Programm starten
- exec -g $_
- # Bildschirminhalt wiederherstellen und Speicher freigeben
- putscr ; putscr -f
- # Cursorposition wiederherstellen und Cursor sichtbar
- echo ^033k^c ; cursor +v
- # Variable freigeben
- _=
- }
-
- Siehe auch: exec
-
- -----
- getscr - Sichern/Laden eines Bildschirminhalts
-
- Syntax: getscr [-[Header] Dateiname]
-
- Der Bildschirminhalt wird in einem internen Speicherbereich gesichert. Er
- kann mit dem Kommando putscr wiederhergestellt werden.
- Wenn das Flag - angegeben ist, wird der Bildschirminhalt aus der angegebenen
- Datei gelesen. Dazu kann die Länge eines Headers angegeben werden, der über-
- lesen wird. Wenn kein Header angegeben wird, wird kein Header überlesen.
-
- Durch nochmaligen Aufruf von getscr wird der zuvor gespeicherte Bildschirm
- überschrieben.
-
- Beispiel:
- getscr
- Sichern des aktuellen Bildschirminhaltes
- getscr - <picture.doo
- Laden eines Doodle-Bildes (32000 Bytes)
- getscr -34 <picture.pi3
- Laden eines Degas-PI3-Bildes (32066 Bytes)
-
- Siehe: putscr
- showpic (externes Kommando)
- das Beispiel bei gemexec
-
- -----
- goff - Abmeldung von AES
-
- Syntax: goff
-
- Die Shell meldet sich als Applikation vom AES ab, und der Bildschirm wird
- gelöscht.
- Wenn vor der Eingabe von goff nicht gon eingegeben worden ist, erscheint
- stattdessen eine Fehlermeldung.
-
- Siehe: gon
-
- -----
- gon - Anmeldung bei AES
-
- Syntax: gon [-q]
-
- Die Shell meldet sich bei GEM als Applikation an.
- Dieses Kommando ist nützlich bei der Verwendung von GEM-Applikationen.
- Außerdem muß es vor der Verwendung einiger interner Kommandos (z.B. fsel
- und mouse) benutzt werden.
- Außerdem hat gon folgende Konsequenzen:
- 1) die Tastatureingabe läuft über die AES-Funktion evnt_keybd statt über
- die Gemdos-Funktion Crawcin,
- 2) das Kommando sleep benutzt die AES-Funktion evnt_timer statt einer
- Warteschleife.
- Daraus ergibt sich, daß Accessories, die im Multitasking-Betrieb laufen,
- bei aktiviertem gon während der Tastatureingabe und dem sleep-Kommando
- aktiviert werden. Ein Accessory, das laufend die Uhrzeit auf den Bild-
- schirm schreibt, tut dies also während der Tastatureingabe, wenn gon
- aktiv ist. Dasselbe gilt für andere Hintergrund-Accessories wie Drucker-
- spooler o.ä.
- Die Tastaturpufferung funktioniert jedoch trotzdem, da die Tastaturein-
- gaberoutine erst den Tastenpuffer ausliest, bevor sie weitere Tasten mit
- evnt_keybd einliest.
-
- Wird gon mehrfach hintereinander aufgerufen, ohne daß zwischendurch goff
- aufgerufen wird, erscheint eine Fehlermeldung.
-
- Wenn das Flag -q angegeben ist, meldet sich die Shell nicht als Applikation
- an, sondern es wird folgender Rückgabewert (in $?) zurückgeliefert:
- 1 wenn gon bereits aktiviert ist,
- 0 sonst.
- Um Fehlermeldungen zu vermeiden, sollten Shellscripts, die mit Kommandos, die
- gon erfordern (z.B. fsel), folgendermaßen vorgehen:
-
- gon -q
- GONSTAT=$?
- if [ $GONSTAT = 0 ]
- then
- gon
- fi
-
- ...................... andere Kommandos
-
- if [ $GONSTAT = 0 ]
- then
- goff
- fi
- GONSTAT=
-
- Auf diese Weise wird der Status von gon (aktiv oder nicht) in einer Variablen
- (GONSTAT) gespeichert und benutzt, um gon ggfs. zu aktivieren und später wieder
- zu deaktivieren.
-
- Siehe: goff
- sleep
-
- -----
- grep , fgrep - Suchen von Mustern
-
- Syntax: grep|fgrep [-cfsl] Pattern {File}
-
- Sucht in allen angegebenen Dateien oder, falls keine Dateien angegeben sind,
- in StdIn nach Zeilen, die auf das Muster Pattern passen. Die gefundenen
- Zeilen werden mit dem Dateinamen ausgegeben.
-
- fgrep sucht feste Strings. Es werden alle Zeilen ausgegeben, die den String
- Pattern enthalten.
-
- grep sucht Muster nach den Regeln der erweiterten Wildcards (siehe okami.doc).
- Es werden alle Zeilen ausgegeben, in denen sich eine Zeichenkette befindet,
- die nach den Regeln der erweiterten Wildcards auf Pattern paßt.
- Wenn Pattern mit einer Tilde (~) beginnt, wird Pattern ab dem Beginn der Zei-
- len gesucht. Wenn Pattern mit einem Dollarzeichen ($) endet, wird Pattern am
- Ende der Zeilen gesucht. Achtung: in der Eingabe muß das Dollarzeichen in ein-
- fachen Anführungszeichen ('$') oder hinter einem Dach (^$) stehen, da es sonst
- als Einleitung einer Shellvariablen interpretiert wird.
-
- Flags:
- -c Es werden die Zeilennummern der gefundenen Zeilen mit ausge-
- geben.
- -f Es wird in jeder Datei nur die erste Übereinstimmung gesucht.
- -s (nur für grep) berücksichtigt Whitespace-Zeichen am Zeilen-
- anfang. Wenn -s nicht angegeben ist, werden Whitespace-Zeichen
- am Zeilenanfang ignoriert.
- -l ignoriert Groß- und Kleinschreibung.
-
- Beispiele: findet z.B. die Zeile
-
- grep Hallo Der Mann sagte "Hallo".
- Hallo, sagte der Mann.
- grep H*o Der Mann sagte nochmal "Hallo".
- Heute oder morgen.
- grep [hH]allo hallo
- Hallo
- grep -l hallo (dito)
- Der Mann sagte zum dritten Mal "Hallo".
- grep Hallo^$ Der Mann sagte zu letztenmal Hallo
- fgrep ~[a-n]*[aAbB]?^$ Hier steht "~[a-n]*[aAbB]?$".
-
- fgrep printf *.c sucht alle printf-Aufrufe in allen C-Dateien.
- fgrep "printf *.c" sucht die Zeichenkette "printf *.c" in StdIn.
- cmds | grep ~[gst] Ausgabe aller interner Kommandos, die mit g,
- s oder t beginnen.
-
- Rückgabewert:
- -1 Aufruffehler
- sonst Anzahl der gefundenen Übereinstimmungen.
-
- -----
- hardcopy - Ausdrucken des Bildschirminhalts
-
- Syntax: hardcopy
-
- Falls ein Drucker empfangsbereit ist, wird eine Bildschirm-Hardcopy ausge-
- druckt (nur bei S/W-Monitor moeglich), ansonsten erscheint eine Fehler-
- meldung.
-
- Rückgabewert:
- 0 Ok., es ist gedruckt worden.
- -1 Der Drucker war nicht bereit.
-
- -----
- hd - Ausgabe eines Hex-Dumps
-
- Syntax: hd [-b] [File]
-
- Gibt einen Hex-Dump von StdIn oder, falls angegeben, von File, nach StdOut.
- Der Hexdump ist folgendermaßen aufgebaut:
-
- nnnnnn hh hh ..... hh hh aaaaaaaa aaaaaaaa
-
- nnnnnn: Die Byte-Nummer (Hex)
- hh: jeweils ein Byte in Hex (insgesamt 16)
- aa...a: die entsprechenden Bytes in Ascii (ein Punkt, falls nicht druckbar.
- Es wird der Punkt mit Ascii-Code 0xfa benutzt.).
-
- Flags: -b An der Stelle aa...a werden keine Punkte, sondern immer die
- Ascii-Zeichen ausgegeben, auch wenn diese nicht druckbar
- sind. Eine solche Ausgabe kann man dann z.B. zu dem Kommando
- raw -n pipen.
-
- Um einen flüchtigen Überblick über den binären Inhalt einer Datei zu ge-
- winnen, reicht es in manchen Fällen aus, das Kommando raw zu benutzen, das
- wesentlich schneller ist und eine kürzere Ausgabe erzeugt.
-
- Beispiele:
- 1) Hex-Dump einer Binärdatei:
- hd sh.ttp
-
- 2) Hex-Dump der Inhalte der Speicherstellen 0xabc000 bis 0xabcfff:
- memex 0xabc000 0xfff | hd
-
- 3) Seitenweiser Hexdump:
- hd sh.ttp | pg
-
- 4) Hexdump der Dateien test1.tos, test2.tos und test3.tos in die Datei
- test.hd:
- hd test1.tos test2.tos test3.tos > test.hd
-
-
- Siehe auch: raw
-
- -----
- help - Kurzanleitung mit Syntaxerklärung
-
- Datei: $HOME/help
- Syntax: help
-
- Die Datei Datei $HOME/help wird nach StdOut ausgegeben. Die Ausgabe erfolgt
- mit dem Kommando pg.
-
- Siehe: pg
-
- -----
- history - Laden und Speichern der History-Tabelle
-
- Syntax: history [-(l|s)]
-
- Wenn kein Parameter angegeben ist, werden alle Einträge der Tastatur-History-
- tabelle nach StdOut geschrieben, der zuletzt eingegebene Eintrag zuletzt.
- (Das ist, wenn history von der Tastatur eingegeben wurde, das history-Kommando
- selber).
- Wenn der Parameter -l angegeben ist, werden Zeilen von StdIn eingelesen und
- nacheinander in die History-Liste eingefügt, so als ob sie über die Tastatur
- eingegeben würden.
-
- Wenn das Flag -s angegeben ist, wird nur eine Statistik über freie und belegte
- Plätze in der History-Liste ausgegeben. Hierbei ist zu beachten, das die His-
- tory-Liste in der Art eines Ringpuffers organisiert ist, was bedeutet, daß sie
- niemals überlaufen kann.
-
- Mit den folgenden Zeilen im Profile:
-
- HISTFILE=$HOME/history
- if [ -f $HISTFILE ]
- then
- history -l <$HISTFILE
- fi
- trap +history ^>$HISTFILE ^; chmod +h $HISTFILE
-
- wird bei jedem Programmende die History-Liste in die Datei $HOME/history ge-
- schrieben (und die Datei unsichtbar gemacht), und bei Programmstart wird die
- History aus dieser Datei wiederhergestellt.
- Anmerkung:
- 1) es genügt:
- trap +history ^>$HISTFILE
- , aber dann ist die Datei nicht unsichtbar.
- 2) das Pluszeichen vor history verhindert das Überschreiben eines evtl. be-
- reits definierten Trap-Kommandos.
-
- Siehe auch: trap
- okami.doc zum Thema Tastatureingabe
-
- -----
- if, then, else, fi - Bedingte Ausführung
-
- Syntax: if Kommando1
- [then]
- Kommandos2
- [else
- Kommandos3]
- fi
-
- Mit dieser Befehlsfolge ist es möglich, Teile eines Shellscripts nur
- dann auszuführen, wenn eine bestimmte Bedingung zutrifft. Die Verwen-
- dung bei Tastatureingabe ist ebenfalls möglich, aber nicht unbedingt
- sinnvoll.
-
- Wenn der Rückgabewert von Kommando1 ungleich 0 ist, werden die unter
- Kommandos2 angegebenen Kommandos ausgeführt. Wenn der Rückgabewert
- von Kommando1 gleich 0 ist, werden die unter Kommandos3 angegebenen
- Kommandos ausgeführt, falls angegeben. Hierbei sind Kommandos2 und
- Kommandos3 Folgen von beliebig vielen (auch null) beliebigen Shellkommandos
- (auch weitere if-else-fi-Konstruktionen). Es können über 32000 if's ge-
- schachtelt werden.
-
- Das Kommando "then" ist ohne jegliche Wirkung. Es kann aus Kompatibili-
- täts- oder aus kosmetischen Gründen verwendet werden.
-
- Als Kommando1 kann ein beliebiges Shell-Kommando stehen. Die meisten
- internen Kommandos geben im Fehlerfall -1, sonst 0 zurück. Bei einigen
- Kommandos (z.B. grep) hat der Rückgabewert eine andere Bedeutung.
- Typische Kandidaten für "Kommando1" sind true, false und test (bzw. "[").
-
-
- Beispiele:
-
- Die folgenden Beispiele sind als Ausschnitte von Shellscripts zu verstehen.
-
- 1) Ausgabe der Information, ob eine Datei existiert
-
- if test -f datei.txt
- then
- echo datei.txt existiert
- else
- echo datei.txt existiert nicht
- fi
-
- 2) Genau dasselbe, etwas kürzer
-
- if [ -f datei.txt ]
- echo datei.txt existiert
- else
- echo datei.txt existiert nicht
- fi
-
- 3) Feststellen, ob ein Muster in einer Datei vorhanden ist
- (Die Ausgabe von grep wird nach NULL: umgeleitet, damit sie nicht die
- Bildschirmausgabe stört.)
-
- if grep Muster datei.dat >NULL:
- echo Das Muster ist vorhanden.
- else
- echo Es ist nicht vorhanden.
- fi
-
- 4) Sicherheitsabfrage vom Benutzer einholen. Wenn der Benutzer "n" ein-
- gibt, wird das Programm abgebrochen (d.h. das augenblickliche Shell-
- script beendet).
-
- echo "Soll das Programm fortgesetzt werden? (j/n)"
- read JAODERNEIN
- if [ $JAODERNEIN = n ]
- exit
- fi
-
- 5) Numerische Vergleiche:
-
- echo Bitte geben Sie ihr Alter ein.
- read ALTER
- if [ $ALTER -ge 18 ]
- echo Sie sind erwachsen.
- else
- if [ $ALTER -lt 14 ]
- echo Du bist ein Kind.
- if [ $ALTER -lt 6 ]
- echo Du hast geschummelt, mit $ALTER kann man noch nicht lesen.
- fi
- else
- echo Du bist ein Jugendlicher.
- fi
- fi
-
- 6) Das Kommando keydef soll ausgeführt werden, aber nur, wenn es auch als in-
- ternes Kommando vorhanden ist.
-
- if [ keydef -t i ]
- then
- keydef F1 "dir"
- else
- echo keydef ist nicht vorhanden!
- fi
-
- 7) Eine Art Neuimplementation des type-Kommandos, es wird der Typ des Kommandos
- $COM ausgegeben.
-
- if [ $COM -t f ]
- then
- echo $COM is a function
- fi
- if [ $COM -t i ]
- then
- echo $COM is a shell builtin
- fi
- (usw.)
-
- 8) Feststellen, ob das Kommando upn extern oder intern ist:
-
- if [ upn -t sb ]
- then
- echo upn ist ein externes Kommando
- else
- echo upn ist intern oder Shellfunktion
- fi
-
-
- Siehe auch: test
- true
- false
- while
-
- -----
- indir - Kommando-Indirektion
-
- Syntax: indir String
-
- Der String wird ausgewertet (Shellvariablen expandiert, Command Substitution
- durchgeführt etc.) und auf StdOut ausgegeben. String wird also insgesamt
- zweimal ausgewertet: einmal bei der Eingabe des Kommandos und das Ergebnis
- dieser Auswertung nochmal durch das indir-Kommando. Dies ist nützlich beim
- Arbeiten mit Variablen, die andere Variablennamen beinhalten, für doppelte
- Command Substitution usw.
-
- Beispiele:
- VAR=hallo
- POINTER=VAR
- echo $POINTER ergibt VAR
- echo ^$POINTER ergibt $POINTER
- indir ^$POINTER ergibt VAR
- echo ^$$POINTER ergibt $VAR
- indir ^$$POINTER ergibt hallo
-
- ... also ein Zugriff auf den Inhalt der Variablen VAR ohne direkten Zugriff
- auf VAR. indir entspricht also in dieser Verwendung ungefähr dem Pointer-
- Konzept moderner Programmiersprachen.
-
- VAR=^`echo hallo^`
- echo $VAR ergibt `echo hallo`
- indir $VAR, wie gehts ergibt hallo, wie gehts
-
- ... also indirekter Zugriff auf Shellkommandos, die z.B. in einer Shellvaria-
- blen liegen. In obigem indir-Kommando wird zuerst $VAR zu `echo hallo` expan-
- diert, und indir führt dann die Command Substitution aus.
-
- REVON='^033p' speichern eines VT52-Codes
- echo $REVON ergibt ^033p
- indir $REVON führt den VT52-Code aus.
-
- -----
- keyb - Konfiguration der Tastatur
-
- Syntax: keyb [-]
- oder keyb [(+|-)a] [(+|-)b] [(+|-)c] [-iInit] [-rRepeat]
-
- Mit diesem Kommando wird die Tastatur konfiguriert. Folgende Konfigurationen
- sind möglich:
- Das Auto-Repeat kann ein- und ausgeschaltet werden,
- Das Tastenklicken kann ein- und ausgeschaltet werden,
- Die Klingel bei Ausgabe von Ascii BEL (0x7) kann ein- und ausge-
- schaltet werden,
- Die Zeitspanne bis zum Einsetzen des Auto-Repeat und die Wieder-
- holrate können eingestellt werden.
- In der ersten Form, also beim Aufruf ohne Parameter oder nur mit einem
- Minuszeichen, wird die Konfiguration ausgegeben. Wenn als Parameter ein
- Minuszeichen angegeben ist, erfolgt die Ausgabe so, daß sie später wieder
- als Parameter für keyb benutzt werden kann, z.B.:
- x=`keyb -`
- ....................... sonstige Kommandos
- keyb $x
- speichert die Konfiguration und stellt sie danach wieder her.
-
- Bei den Flags a, b und c bedeutet + einschalten und - ausschalten.
-
- a Auto-Repeat ein/aus
- b Ascii-BEL ein/aus
- c Tastenklick ein/aus
-
- Bei den Flags -i und -r wird die entsprechende Zeitspanne in 1/50 Sekunden
- angegeben.
-
- -i die Zeitspanne bis zum Einsetzen des Auto-Repeat,
- -r die Zeitspanne zwischen zwei Wiederholungen.
-
- ACHTUNG: bei diesem Kommando können die Flags nicht zu Gruppen zusammenge-
- faßt werden, d.h.
- keyb -abc
- ist falsch, es muß
- keyb -a -b -c
- heißen.
-
- Siehe auch: cursor
- scr
- mouse
-
- -----
- keydef - Umdefinition der Tastatur
-
- Syntax: keydef [+(n|s|c|a)] Scancode [Text|-]
- keydef clear|list|help
-
- Mit diesem Kommando kann die Ausgabe aller Tasten umdefiniert werden. Es ist
- damit möglich, jeder Taste neue Zeichenketten zuzuordnen, die beim Drücken
- dieser Taste zu erzeugen sind. Damit kann man z.B. die Buchstabentasten um-
- sortieren, aber auch die F-Tasten mit Funktionen belegen.
-
- Jedes keydef-Kommando betrifft eine Taste, die durch den Scancode und die
- Steuertaste bestimmt ist (z.B. Ctrl A etc.)
-
- Wenn eins der Flags +n, +s, +c oder +a angegeben ist, bestimmt dieses, für
- welche Steuertaste die Umdefinition wirkt. Es bedeuten:
- +n keine Steuertaste
- +s eine der Shift-Tasten
- +c die Control-Taste
- +a die Alternate-Taste
- Wenn keins dieser Flags angegeben ist, wird +n angenommen.
-
- Der Scancode kann in einem der folgenden Formate angegeben sein:
- 1) ein Minuszeichen, gefolgt von einer Zahl; diese repräsentiert den
- gewünschten Scancode direkt.
- 2) ein Schlüsselstring. Eine Liste der möglichen Schlüsselstrings
- finden Sie in dieser Datei unter dem Stichwort "keydefcode".
-
- Wenn kein Text angegeben ist, wird die betreffende Tastendefinition (falls
- vorhanden) ausgegeben.
- Wenn der Text aus einem Minuszeichen besteht, wird die betreffende Tasten-
- definition (falls vorhanden) gelöscht.
- Ansonsten wird der Text als neue Tastendefinition gespeichert, eine evtl. be-
- reits vorhandene Definition derselben Taste wird dabei überschrieben.
-
- Wenn der Text Leerzeichen oder Sonderzeichen enthält, muß er in Anführungs-
- zeichen eingeschlossen sein.
-
- Wenn der Text mit einem Pluszeichen beginnt, wird, wenn in der Tastatur-
- eingabe die betreffende Taste gedrückt wird, die Eingabezeile durch den Text
- ersetzt (ansonsten wird der Text an die bisherige Eingabe angehängt).
- Wenn der Text mit "^c" endet, wird nach Druck auf die betreffende Taste die
- Eingabezeile ausgeführt.
-
- Wenn der Text mit einem Ausrufezeichen beginnt, stellt er nicht einen durch
- die Taste zu erzeugenden Ascii-String, sondern eine Umdefinition des durch
- die Taste zu erzeugenden Shift-, Scan- und Ascii-Codes dar. Das Format
- lautet
- ![+x]Scancode [Asciicode]
- x ist dabei entweder n, s, c oder a und bewirkt die Steuertastenkombination.
- Scancode wird wie oben beschrieben angegeben und ist der neue zu erzeugende
- Scancode.
- Asciicode ist ein einziges Zeichen, das den neuen Ascii-Code der Taste be-
- schreibt.
-
- Wenn als einziger Parameter "clear" angegeben ist, werden sämtliche Tasten-
- definitionen gelöscht.
- Wenn als einziger Parameter "list" angegeben ist, wird eine Liste aller vor-
- handener Definitionen erzeugt, und zwar in Form von keydef-Kommandos.
- Wenn als einziger Parameter "help" angegeben ist, wird eine Liste aller Scan-
- code-Schlüsselstrings erzeugt.
-
- Alle Umdefinitionen betreffen ausschließlich die Tastatureingabe der Shell.
-
- Beispiele:
-
- 1) Amerikanische Tastatur durch Vertauschen von y und z.
- keydef y z
- keydef z y
- keydef -s y Z
- keydef -s z Y
-
- Das jeweils erste y bzw. z ist die Angabe des umzudefinierenden Scancodes.
- Das zweite ist die Ascii-Zeichenkette, die durch die Taste erzeugt werden
- soll.
-
- 2) Ausführen von "dir *.c" bei Druck auf F1:
- keydef f1 "+dir *.c^c"
-
- 3) Ausgabe der Definition von Ctrl Help:
- keydef +c help
- oder:
- keydef +c -0x62
- Einmal wird die Help-Taste durch den Code-String "help" und einmal direkt
- durch den Scancode 0x62 angegeben.
-
- 4) Löschen der Definition von Shift F5:
- keydef -s F5 -
-
- 5) Ausgabe aller Tastendefinitionen in eine Datei:
- keydef list >keys.sh
- Die Datei keys.sh ist dann ein Shellscript, das, wenn es gestartet wird,
- alle Tastendefinitionen installiert.
-
- 6) Ein Druck auf Shift-F6 soll dasselbe bewirken wie Help. Dafür wird der
- von F6 bewirkte Scancode auf den von Help umgebogen.
- keydef +s F6 "!help"
-
- 7) Mit Ctrl-Esc wird die Shell beendet, Esc alleine löscht nur die Eingabe-
- zeile (übernimmt also die Funktion von Clr-Home), Clr-Home löscht den
- Bildschirm:
- keydef +c ESC "!+c V"
- keydef ESC "!CLR"
- keydef CLR "+cls ^c"
- Das erste keydef belegt Ctrl-Esc mit Ctrl-V, das zweite belegt Esc alleine
- mit der ursprünglichen Funktion der Clr-Home-Taste. Das dritte keydef
- sorgt dafür, daß bei Druck auf Clr-Home das Kommando cls ausgeführt
- wird.
- => Man kann alle vordefinierten Tastenfunktionen beliebig auf neue Tasten
- legen!!!!
-
- 8) Ein Druck auf Undo soll ein Z eingeben.
- keydef undo "!Z z"
- keydef +s undo "!+s Z Z"
- Das erste keydef sorgt dafür, daß bei Druck auf Undo der Scancode von Z
- und der Ascii-Code von z benutzt wird. Das zweite keydef macht dasselbe
- für Shift Undo und erzeugt ein großes Z.
-
- 9) Löschen aller Tastendefinitionen:
- keydef clear
-
- Siehe auch: keydefcode
-
- -----
- keydefcode - Code-Strings für Scancode-Angaben des keydef-Kommandos
-
- Bei allen Codes ist die Groß/Kleinschreibung ohne Bedeutung. Es gilt:
- * Die Strings A bis Z und 0 bis 9 stehen für die jeweilige Buchstaben-
- bzw. Zahlentaste.
- * Die F-Tasten werden durch ein vorgestelltes F gekennzeichnet (z.B.
- F6, F10,...)
- * Tasten des Zehnerblocks sind durch ein vorgestelltes Z gekenn-
- zeichnet. Z5 ist also die 5 auf dem Zehnerblock.
-
- Code Tastenaufschrift
- ---- ----------------
- Alpha-Block
- ESC Esc
- QUES ß ?
- ACC ' `
- HASH # ^
- BS Backspace
- TAB Tab
- AT @ Ü \
- PLUS + *
- CR Return (*)
- DEL Delete
- OB [ { Ö
- CB ] } Ä
- TIL ~ |
- LESS < >
- COMMA , ;
- DOT . :
- MINUS - _
- SPC die Leertaste
- Cursor-Block
- UNDO Undo
- HELP Help
- INS Insert
- CLR Clr Home
- UPAR Pfeil auf
- DNAR Pfeil ab
- LTAR Pfeil nach links
- RTAR Pfeil nach rechts
- Zehnerblock
- ZMINUS -
- ZPLUS +
- ZOP (
- ZCP )
- ZSLASH /
- ZAST *
- ZDOT .
- ZCR Enter (*)
-
-
- (*) Eine Umdefinition dieser Tasten ist zwar möglich, aber bei der Tastatur-
- eingabe ohne Wirkung.
-
- -----
- ls - Ausgabe von Dateilisten
-
- Syntax: ls [-adlkCv] [-xtbnr] {Filespec}
-
- Gibt eine Liste aller Dateien, deren Namen auf Filespec passen, nach StdOut
- aus. Filespec nicht angegeben bedeutet .\* (alle Dateien im aktuellen Direc-
- tory).
- Die Namen von Ordnern werden in [] (eckige Klammern) eingefasst.
- Die Namen von ausfuerbaren Dateien werden in <> (spitze Klammern) eingefasst.
- Flags:
- -a Auch versteckte und System-Dateien werden ausgegeben.
- -d Wenn Filespec der Name eines Ordners ist, wird der Ordner
- selber und nicht sein Inhalt ausgegeben.
- -l Angaben ueber Dateiattribute, Dateilaenge und Datei-
- datum und -zeit werden ausgegeben. Außerdem werden am Ende
- der Liste die Summe aller Dateilängen und die Anzahl der
- Dateien ausgegeben (bei mehr als einer Datei).
- -k Keine [] und <> um Dateinamen.
- -C Die Dateien werden in mehreren Spalten ausgegeben.
- -v Es wird nur der Diskettenname ausgegeben.
- -x Die Dateien werden nach Extendern sortiert ausgegeben.
- -t Die Dateien werden nach dem Anlagezeitpunkt der Datei
- sortiert ausgegeben (die älteste Datei zuerst).
- -b Die Dateien werden nach ihrer Länge sortiert ausge-
- geben (die kürzeste Datei zuerst).
- -n Die Dateien werden in der Reihenfolge ausgegeben, in der
- sie physikalisch gespeichert sind. -r ist ohne Wirkung.
- -r Die Reihenfolge der Dateien wird umgekehrt (außer bei -n).
-
- Wenn keins der Flags -x, -t, -b, -n angegeben ist, werden die Dateien nach
- dem Dateinamen sortiert ausgegeben (in aufsteigender Reihenfolge). Dann
- und bei -x erscheinen die Ordner nach den Dateien.
-
- Wenn als erstes Flag -! angegeben ist, werden alle folgenden Angaben als
- Dateispezifikationen betrachtet und von den betreffenden Dateien Attribute
- (binär), Datum und Uhrzeit (hexadezimal), Dateigröße (dezimal) und der voll-
- ständige Dateiname ausgegeben, und zwar in der physikalischen Reihenfolge.
- Es können keine anderen Flags mit -! benutzt werden. Diese Option dient zu
- Debug-Zwecken der Shell.
-
- Beispiele:
- 1) Liste aller Dateien im aktuellen Verzeichnis, Ausgabe in mehreren
- Spalten:
- ls -C
-
- 2) Liste aller C-Quelldateien im aktuellen Verzeichnis, sortiert nach
- Anlagedatum, die jüngste Datei zuerst:
- ls -tr *.c
-
- 3) Liste aller .PRG-Dateien im Ordner d:\shell mit Dateiattributen, Datei-
- länge und -Datum:
- ls -l d:\shell\*.prg
-
- 4) Liste aller Dateien im Ordner d:\shell mit Attributen, Länge und Datum,
- sortiert nach Dateilänge:
- ls -l -b d:\shell
-
- 5) Liste von Attributen, Länge und Datum des Ordners d:\shell:
- ls -ld d:\shell
-
- 6) Ausgabe des Diskettennamens von Diskette A:
- ls -v A:\
-
- Wenn bei Verwendung von ls -C nicht alle Dateien erscheinen, sondern nur
- eine Zeile, ist das Word Wrap des VT52-Terminals deaktiviert. Nach Eingabe
- von cls verhält sich die Ausgabe wieder normal.
-
- Rückgabewert:
- -1 Aufruffehler
- sonst die Anzahl der ausgegebenen Dateien.
-
- -----
- mem - Ermitteln des freien Speicherplatzes
-
- Syntax: mem [-b]
-
- Wenn kein Flag angegeben ist, wird die Anzahl der freien RAM-Bytes (genauer
- gesagt die Länge des längsten zusammenhängenden freien RAM-Bereiches) nach
- StdOut geschrieben.
- Wenn das Flag -b angegeben ist, wird die Größe der Speicherbänke 0 und 1 sowie
- die Gesamtgröße des RAM-Speichers ausgegeben.
-
- -----
- memex - Auslesen des Speichers
-
- Syntax: memex [-acwls] Startadr [Anzahl]
-
- Kopiert eine Anzahl von Speicherstellen nach StdOut. Falls Anzahl nicht
- angegeben ist, wird Anzahl=1 gesetzt.
-
- Flags: -s Vor dem Auslesen wird der Prozessor in den Supervisor-Modus
- versetzt. Dies ist sinnvoll beim Auslesen von System-
- adressen.
- -a Liest Anzahl Bytes von Startadr an und gibt die Inhalte
- als Ascii-Zeichen aus. Bei nicht-druckbaren Zeichen werden
- die entsprechenden Ascii-Codes (z.B. NUL, SOH etc.) ausge-
- geben.
- -c Liest Anzahl Bytes von Startadr an und gibt die Inhalte
- numerisch (im Bereich 0...0xff) aus.
- -w Liest Anzahl Worte (je 16 bits) von Startadr an und gibt
- die Inhalte numerisch (im Bereich 0...0xffff) aus.
- -l Liest Anzahl Langworte (je 32 bits) von Startadr an und
- gibt die Inhalte numerisch (im Bereich 0...0xffffffff)
- aus.
- Wenn keins von -a, -c, -w, -l angegeben ist, werden Anzahl Bytes
- von StartAdr an nach StdOut kopiert.
- Wenn bei -w oder -l eine ungerade Adresse angegeben ist, wird diese
- vor Benutzung dekrementiert.
-
- Beispiele:
- 1. Ermitteln der Anzahl der angeschlossenen Diskettenlaufwerke durch Aus-
- lesen der betreffenden System-Speicherstelle:
- memex -s -w 0x4a6
- 2. Ausgeben von 100 Bytes von Speicherstelle 0x12345 an als Hexdump:
- memex 0x12345 100 | hd
-
- -----
- mkdir - Ordner erzeugen
-
- Syntax: mkdir [-r] Ordner {Ordner}
-
- Erzeugt die angegebenen Ordner. Wenn das Flag -r angegeben ist, werden voll-
- ständige Pfade erzeugt, ansonsten nur die zuletzt angegebenen Ordner.
- Achtung: wenn -r angegeben ist, wird der Basisname als der Name einer Datei
- betrachtet und nicht angelegt. Um auch den Basisnamen als Ordner anzulegen,
- muß er mit einem Backslash (oder Slash) abgeschlossen sein.
-
- Beispiel:
- mkdir c:/work/test
- erzeugt den Ordner test als Unterordner von c:/work;
- wenn c:/work noch nicht existiert, kommt ein Fehler.
- mkdir -r c:/work/test/data
- erzeugt die Ordner c:/work und c:/work/test, falls
- noch nicht vorhanden. Eine Datei oder Ordner namens
- data wird nicht angelegt.
- mkdir -r c:/work/test/data/
- erzeugt die Ordner c:/work, c:/work/test und
- c:/work/test/data, falls noch nicht vorhanden.
- FILE=d:/data/files/x.out
- mkdir -r $FILE
- legt alle Ordner an, die für die Datei $FILE be-
- nötigt werden, also den Pfad d:/data/files. Die Datei
- x.out wird nicht angelegt. Nach diesem Kommando
- können z.B. Ausgaben nach $FILE umgeleitet werden.
-
- Rückgabewert: Anzahl der erzeugten Ordner (oder Pfade bei -r).
-
- -----
- more - SIEHE pg
-
- -----
- mouse - Konfiguration und Abfrage der Maus
-
- Syntax: mouse [+|-] [Form] [XVar [YVar]]
-
- Dieses Kommando dient zwei verschiedenen Zwecken: 1) der Konfiguration
- des Mauszeigers und 2) der Abfrage der Mauskoordinaten. Das Kommando muß
- mit mindestens einem Parameter aufgerufen werden, es können aber alle
- der möglichen Parameter gleichzeitig benutzt werden.
- Es handelt sich hierbei um die Benutzung von AES-Funktionen, weswegen vor
- Benutzung von mouse die Shell als Applikation bei GEM angemeldet werden
- muß. Dies geschieht mit dem Kommando gon.
-
- Parameter:
- + der Mauszeiger wird sichtbar gemacht.
- - der Mauszeiger wird unsichtbar gemacht.
- Form es wird die Form des Mauszeigers eingestellt. Anstelle von
- Form steht eine Zahl zwischen 0 und 7, es bedeuten:
- 0 Pfeil
- 1 Cursor (Klammer)
- 2 Biene
- 3 Hand mit Zeigefinger
- 4 flache Hand
- 5 dünnes Fadenkreuz
- 6 dickes Fadenkreuz
- 7 umrahmtes Fadenkreuz
- XVar der Name der Variablen, in die die x-Koordinate der Maus
- gespeichert werden soll. Anstelle von XVar steht ein belie-
- biger Variablenname außer den Ziffern 0 bis 7 (die als
- Variablennamen vom Benutzer ohnehin nicht verändert werden
- sollten.)
- YVar analog für die y-Koordinate.
-
- Beispiel:
- mouse + 0
- Der Mauszeiger wird sichtbar und auf einen Pfeil eingestellt.
- mouse X Y
- echo Die Mauskoordinaten sind $X und $Y
- Abfrage der Mauskoordinaten.
-
- ACHTUNG: Die Einstellung der Maus erfolgt mit der AES-Funktion graf_mouse.
- AES verwaltet das Ein- und Ausschalten der Maus in einem Puffer, d.h. wenn
- die Maus dreimal ausgeschaltet wird, muß sie auch dreimal wieder eingeschal-
- tet werden, bevor sie sichtbar wird. Da mehrfaches Einschalten der Maus zu
- Verwirrungen bei GEM-Formularen führen kann, sollte man hier mit großer
- Vorsicht vorgehen. Wenn es zu Problemen kommt, hilft jedoch meistens die
- Rückkehr zum Desktop.
- Die Mauskoordinaten werden mit der AES-Funktion graf_mkstate bestimmt.
- Erfahrungsgemäß führt dies regelmäßig zu falschen Werten, da das Bildschirm-
- scrolling die Mauskoordinaten beeinflußt. Zuverlässig sind die Werte zu-
- mindest nach einem cls.
-
- Siehe auch: cursor
- keyb
- scr
-
- -----
- mv - Dateinamen ändern
-
- Syntax: mv Source Dest
-
- Die Datei Source wird in Dest umbenannt. Falls eine Datei mit dem Namen
- Dest bereits vorhanden ist, wird diese geloescht. Wenn Dest der Name eines
- existierenden Ordners ist, wird Source nach Dest\Source umbenannt.
- Das Kommando kann benutzt werden, um Dateien zwischen verschiedenen Lauf-
- werken oder Ordnern zu bewegen. Beim Verschieben auf einem Laufwerk wird
- dabei nur der Directory-Eintrag kopiert, was sehr schnell geht, da die
- Größe der Datei keine Rolle spielt (die Daten bleiben also, wo sie sind).
- Beim Verschieben von einem Laufwerk auf ein anderes wird die Datei erst
- mit cp kopiert und dann gelöscht.
-
- Ab TOS 1.4 können mit mv auch die Namen von Ordnern geändert werden.
-
- Bsp: mv msh.tos msh.prg (Umbenennen)
- mv test.prg d:\shell\bin (Verschieben in einen anderen Ordner)
- mv a:\test.acc c:\ (Verschieben in ein anderes Laufw.)
- mv docs anleitg (Änderung eines Ordnernamens: nur ab
- TOS 1.4!)
-
- -----
- num - Ausgabe einer Zahl in verschiedenen Zahlensystemen
-
- Syntax: num [-bodhxa] Zahl {Zahl}
-
- Die Zahlen werden in binärer, oktaler, dezimaler und hexadezimaler Form
- sowie als Ascii-Zeichen ausgegeben. Wenn das entsprechende Ascii-Zeichen
- nicht druckbar ist, wird die Bezeichnung des Zeichens (z.B. NUL, SOH etc.)
- ausgegeben.
-
- Flags: -b Die Zahlen werden nur im Binärsystem ausgegeben.
- -o Die Zahlen werden nur im Oktalsystem ausgegeben.
- -d Die Zahlen werden nur im Dezimalsystem ausgegeben.
- -h Die Zahlen werden nur im Hexadezimalsystem ausgegeben.
- -x Wie -h.
- -a Die Zahlen werden nur als Ascii-Zeichen ausgegeben.
-
- Beispiele:
-
- 1) Ausgabe von 123 (dezimal) in allen Zahlensystemen:
- num 123
-
- 2) Ausgabe von 123 (hex) in allen Zahlensystemen:
- num 0x123
-
- 3) Ausgabe von -123 (dezimal) in Hex:
- num -x "-123"
- und NICHT: num -x -123
-
- 4) Ausgabe der Konsolkonfigurationsbits durch Auslesen einer Systemadresse
- und Umformung ins Binärsystem:
- memex -sc 0x484 | xargs num -b
-
-
- -----
- pg, more - Seitenweise Ausgabe von Dateien
-
- Syntax: pg|more [File]
-
- StdOut oder, falls angegeben, File wird in Seiten zu je $PAGELEN Zeilen
- ausgegeben. Nach jeder Seite kann der Anwender:
- mit der Leertaste die nächste Seite anzeigen,
- mit der Taste D die nächste halbe Seite anzeigen,
- mit der RETURN-Taste die nächste Zeile anzeigen,
- mit der Taste Q die Ausgabe abbrechen.
-
- -----
- pmd - Ausgabe eines Post-Mortem-Dumps
-
- Syntax: pmd
-
- Dieses Kommando kann verwendet werden, um Informationen über ein Programm zu
- erhalten, das von einer Exception durch Bomben beendet wurde. Es erzeugt eine
- Ausgabe, die die Inhalte der Register d0 bis d7 und a0 bis a6 sowie des
- usp (a7), ssp (a7") und des Programmzählers (pc) enthält. Außerdem wird die
- Nummer der die Bomben auslösenden Exception ausgegeben und die obersten sechs
- 16bit-Worte des Stacks, letztere sowohl in Hex- als auch in Ascii-Notation.
- Nicht-druckbare Zeichen (solche mit Ascii-Code<32) werden als dicke Punkte
- ausgegeben.
- Die Nummer der Exception wird dezimal, alle anderen Angaben hexadezimal an-
- gegeben. (Da die Nummer der Exception normalerweise kleiner als 10 ist,
- macht es keinen Unterschied, ob man sie dezimal oder hexadezimal ausgibt.)
-
- Wenn noch keine Exception aufgetreten ist, durch die Bomben hervorgerufen
- wurden, sind die Informationen ungültig. Es erscheint dann vor der Ausgabe
- die Meldung "WARNING: Information void".
-
- -----
- ps - Ausgabe der laufenden Programme
-
- Syntax: ps [-bfc]
-
- WENN MINT INSTALLIERT IST:
- Es wird eine Liste der augenblicklich aktiven Prozesse erzeugt. Dabei handelt
- es sich um eine Ausgabe des Inhalts von Pseudo-Laufwerk X:.
- Die Ausgabe hat folgendes Format:
-
- 000 WEV 00:00:00 4096 mint
-
- 000 Die Prozeßnummer.
- WEV Der Prozeßstatus. Siehe unten.
- 00:00:00 Die Laufzeit des Prozesses.
- 4096 Der Speicherbedarf des Prozesses in Bytes.
- mint Der Name des Prozesses.
-
- In diesem Fall wäre der Dateiname des Prozesses also X:\mint.000 .
- Folgende Statusangaben sind möglich:
- RUN Der Prozeß ist augenblicklich aktiv.
- RDY Der Prozeß ist inaktiv, aber bereit, aktiv zu werden.
- TRS Der Prozeß wurde beendet, ist aber noch resident.
- WEV Der Prozeß wartet auf ein Ereignis (z.B. auf das Ende eines
- Kindprozesses).
- WIO Der Prozeß wartet auf eine Ein/Ausgabe.
- ZOM Es ist ein Zombie-Prozeß.
- STP Der Prozeß wurde durch ein Signal beendet.
-
- Die ps übergebenen Parameter und Flags werden ignoriert.
-
-
- WENN MINT NICHT INSTALLIERT IST:
- Das Kommando ps erzeugt eine Liste der augenblicklich laufenden Programme
- (Prozesse). Anders als unter Unix, wo mehrere Prozesse gleichzeitig aktiv
- sein können, ist unter TOS nur jeweils ein Prozeß aktiv. Dieser kann ein
- anderes Programm starten und auf dessen Beendigung warten (mit der Be-
- triebssystem-Funktion Pexec). Das so gestartete Programm kann wiederum
- ein anderes starten usw. Mit ps wird die so erzeugte Reihe von Programmen
- ausgegeben.
- Nach Eingabe von ps erscheint eine Liste der Prozesse in der Reihenfolge
- des Aufrufs. Der augenblickliche Prozeß steht oben, der zuerst vom Desk-
- top gestartete Prozeß steht unten. Das Desktop selber erscheint nicht in
- der Liste.
-
- Flags:
- -b Zu jedem Prozeß wird die Adresse von dessen Basepage aus-
- gegeben.
- -f Wenn dieses Flag angegeben ist, erscheinen die vollen
- Pfadnamen, unter denen die Programme aufgerufen wurden.
- Wenn -f nicht angegeben ist, erscheint nur der reine
- Dateiname (Basisname).
- -c Zu jedem Prozeß wird dessen Kommandozeile ausgegeben.
- VORSICHT: arbeitet unzuverlässig, da bei Programmstart die
- DTA auf diesen Bereich zeigt. Programme, die die DTA nicht
- selber ändern, überschreiben bei jedem DTA-Zugriff diesen
- Bereich.
-
- Der Kern des ps-Kommandos, nämlich der Schritt von der Adresse der Basepage
- zum Aufrufpfad des zugehörigen Programms, stammt aus der Datei initargs.c
- aus der Library des Sozobon C-Systems.
-
- ACHTUNG: Die einzige Angabe, auf die man sich verlassen kann, ist die
- Adresse der Basepage. Da TOS den Aufrufpfad eines Programms nicht in
- der Basepage abspeichert, benutzt ps einen Trick: es holt mit Hilfe der
- Basepage-Adresse die gespeicherte Adresse des USP (User-Stack-Pointer) des
- jeweiligen Programms und bekommt über diese den ersten Parameter der zu-
- letzt aufgerufenen Funktion. Dies ist in jedem Fall Pexec, daher ist der
- erste Parameter der Pfadname des aufgerufenen Programms. (Dieser Trick stammt
- aus den Libraries von Sozobon C.) Das kann natürlich schiefgehen, man sollte
- sich also über nichts wundern.
- Teilweise werden die Aufrufpfade durch das Starten von externen Kommandos
- verändert. Beim Programmstart wird die Kommandozeile als DTA benutzt, wenn
- ein Programm also seine DTA nicht ändert, wird die Kommandozeile beim ersten
- Aufruf von Fsfirst überschrieben.
-
- Siehe auch: basep
-
- -----
- putscr - Wiederherstellen des Bildschirminhalts
-
- Syntax: putscr [-(f|s Dateiname)]
-
- Ein zuvor mit getscr gespeicherter Bildschirminhalt wird wiederhergestellt.
- Es ist möglich, einen einmal gespeicherten Bildschirm mehrmals zu restau-
- rieren.
-
- Flags:
- -f Der Speicherbereich wird freigegeben. Das Bild wird nicht
- wiederhergestellt.
- -s Der Speicherbereich wird in die angegebene Datei gespeichert.
- Wenn eine Datei mit dem angegebenen Namen bereits existiert,
- wird sie überschrieben.
-
- Beispiel:
- getscr - titel.doo
- putscr
- read
- cls
- putscr -f
- Mit dieser Befehlsfolge wird ein Doodle-Bild (32000
- Bytes) aus der Datei titel.doo geladen und angezeigt.
- Die Shell wartet auf einen Tastendruck, dann wird der
- Bildschirm gelöscht und der Speicherbereich wieder
- freigegeben.
- Mit dieser Befehlsfolge kann ein Shellscript, z.B.
- das Profile, eine Grafik als Titelbild ausgeben.
-
- getscr
- putscr -s shell.doo
- putscr -f
- Der aktuelle Bildschirminhalt wird im Doodle-Format
- in die Datei shell.doo gespeichert (Hardcopy).
-
-
- Siehe auch: getscr
- showpic (externes Kommando)
-
- -----
- pwd - Ermitteln des aktuellen Directories
-
- Syntax: pwd [-a|{Drive}]
-
- Schreibt das aktuelle Verzeichnis der angegebenen Laufwerke oder, wenn
- kein Laufwerk angegeben ist, das aktuelle Verzeichnis des aktuellen
- Laufwerks nach StdOut. Wenn -a angegeben ist, werden die aktuellen Verzeich-
- nisse aller angeschlossenen Laufwerke ausgegeben.
- pwd ohne Laufwerksangabe entspricht "echo $CWD".
-
- Beispiele:
- pwd A: B: C: D: E: F: ist äquivalent zu
- pwd abcdef oder, wenn das alle Laufwerke sind, zu
- pwd -a
-
- -----
- raw - Ausgabe auf der "Raw Console"
-
- Syntax: raw [-bnc] {Datei}
-
- Als "Raw Console" oder RAWCON wird der Bildschirm ohne VT52-Emulator und
- Steuerzeicheninterpretation bezeichnet. Die Ausgabe eines CR-Zeichens nach
- RAWCON erzeugt also kein Zeilenende, sondern das "CR"-Schriftzeichen. Mit
- dem Kommando raw kann eine Datei (oder StdIn, wenn keine Datei angegeben
- ist) auf RAWCON ausgegeben werden. Am Ende der Datei wird jedoch ein
- Zeilenvorschub eingefügt, damit das nächste Prompt in einer neuen Zeile
- erscheint. Das kann mit dem Flag -c unterbunden werden.
-
- Flags: -b die Datei wird binär geöffnet, es findet also keine Über-
- setzung CR/LF -> LF statt.
- -n alle CR-Zeichen werden statt über RAWCON über den VT52-
- emulator ausgegeben, bewirken also tatsächliche Zeilen-
- vorschübe. Alle anderen Zeichen werden nicht übersetzt.
- -c die Ausgabe eines Zeilenvorschubs am Ende jeder Datei
- wird unterbunden.
-
- Beispiele:
-
- raw cmds2.o cmds3.o cmds4.o
- gibt die angegebenen Dateien auf RAWCON aus. An Ende jeder Datei wird ein
- Zeilenvorschub erzeugt.
-
- hd -b data.bin | raw -n
- Der Hexdump wird auf RAWCON ausgegeben. CR-Zeichen im Hexdump bewirken
- tatsächliche Zeilenvorschübe in der Ausgabe.
-
- Bemerkung:
- 1) Die Ausgabe erfolgt mit der Bios-Funktion Bconout.
- 2) Dieses Kommando erzeugt keine Ausgabe nach StdOut, kann also nicht
- umgeleitet werden.
-
- -----
- rdti - Konfiguration der Shell mittels desktop.inf
-
- Syntax: rdti [-dclxv] [Datei]
-
- Mit diesem Kommando ist es möglich, einige Konfigurationen der Shell direkt
- aus der desktop.inf-Datei zu lesen, die vom Desktop beim Systemstart be-
- nutzt wird. Diese Informationen sind:
- aktuelles Directory,
- Bezeichnungen der Laufwerke,
- Extender für ausführbare Programme.
- Jede dieser Eigenschaften läßt sich mit einem der Flags ausblenden, so
- daß man sich beim Aufruf von rdti die gewünschten Konfigurationen ein-
- stellen kann. Wenn keine Flags angegeben sind, werden alle diese Ini-
- tialisierungen durchgeführt.
- Wenn keine Datei angegeben ist, wird die Datei /desktop.inf auf dem
- Bootlaufwerk benutzt. Es kann nur eine Datei angegeben werden, Wildcards
- sind nicht erlaubt, der Aufruf "rdti c:/desk*.inf" ist also unzulässig.
-
- Flags:
- -d Wenn dieses Flag nicht angegeben ist, wird das Directory
- von jedem geöffneten Fenster ausgegeben.
- -c Wenn dieses Flag nicht angegeben ist, wird ein cd in
- das Directory von jedem geöffneten Fenster ausgeführt.
- Auf diese Weise kann man das aktuelle Directory auf das
- des obersten Fensters einstellen.
- -l Wenn dieses Flag nicht angegeben ist, liest die Shell die
- Bezeichnungen der Laufwerke (die im Desktop unter den
- Laufwerk-Icons stehen). Diese Bezeichnungen werden z.B.
- von den internen Kommandos drive und df benutzt. Die
- alten Einstellungen der Bezeichnungen gehen dabei ver-
- loren.
- -x Wenn dieses Flag nicht angegeben ist, initialisiert die
- Shell die Variable XEXT anhand der Extender, die in der
- Datei als Extender von ausführbaren Programmen (egal ob
- GEM, TOS oder TTP) eingetragen sind. Der alte Inhalt von
- XEXT geht dabei verloren, es sei denn, in der Datei sind
- keine Extender definiert.
- -v Wenn dieses Flag angegeben ist, gibt rdti Informationen
- über den Dateinamen sowie die durchgeführten Konfigura-
- tionen aus.
-
- Siehe auch: drive
-
- -----
- read - Eingabe von Variablen
-
- Syntax: read [[-] Var]
-
- Eine Zeile wird von StdIn gelesen und, falls vorhanden, in der Variablen
- Var abgelegt. Falls eine Variable mit Namen Var bereits existiert, so wird
- der alte Wert überschrieben.
- Wenn das Flag - angegeben ist, werden in der Eingabe Steuersequenzen und
- Shellvariablen expandiert.
-
- Beispiele:
- 1) Einlesen einer Benutzereingabe:
- echo Bitte geben Sie Ihren Namen ein
- read NAME
- echo Der Name ist $NAME
-
- 2) Einlesen der Anzahl der freien RAM-Bytes in eine Variable:
- mem | read RAM
- echo Es sind $RAM Bytes frei
- (ist analog zu "RAM=`mem`")
-
- 3) Warten auf Druck auf ENTER
- echo Bitte ENTER drücken
- read
-
- 4) Benutzung des Flags "-":
- read x
- $PATH <------------- Eingabe
- speichert die Zeichenkette "$PATH" in der Variablen x.
- read - x
- $PATH <------------- Eingabe
- speichert den Wert der Shellvariablen PATH in der Variablen x.
-
- -----
- readonly - Variablen schreibschützen
-
- Syntax: readonly [[-] {Variable}]
-
- Schreibgeschützte Variablen können nicht gelöscht und ihre Werte können
- nicht verändert werden. Mit dem readonly-Kommando kann das Schreibschutz-
- Flag von Variablen gesetzt und gelöscht werden.
- Wenn readonly ohne Parameter aufgerufen wird, wird eine Liste aller schreib-
- geschützter Variablen ausgegeben.
- Ansonsten wird das Schreibschutz-Flag bei allen angegebenen Variablen ge-
- setzt oder, wenn - angegeben ist, gelöscht.
- Die Namen der Variablen können dabei im Format der erweiterten Wildcards
- angegeben werden, z.B. "readonly a*" betrifft alle Variablen, deren Name
- mit a beginnt. Näheres siehe okami.doc.
- Es können nur Variablen schreibgeschützt werden, die vom Benutzer angelegt
- oder verändert worden sind, also den Status "USR" haben (siehe "vars").
- Um Variablen schreibzuschützen, die von der Shell selber angelegt wurden,
- z.B. PIPDIR, hilft folgender Trick:
- PIPDIR=$PIPDIR
- readonly PIPDIR
- Durch die Zuweisung wird der Wert der Variablen nicht verändert, die
- Variable erhält aber den USR-Status.
-
- Beispiele:
- readonly
- erzeugt eine Liste aller schreibgeschützter
- Variablen.
- readonly VAR1 VAR2 KEY
- die Variablen VAR1, VAR2 und KEY werden
- schreibgeschützt.
- readonly - VAR1 KEY
- der Schreibschutz der Variablen VAR1 und
- KEY wird entfernt.
- readonly *E*
- alle Variablen, deren Name ein E enthält,
- werden schreibgeschützt.
-
- Siehe auch: export
-
- -----
- rm - Löschen von Dateien
-
- Syntax: rm [-fi] File {File}
-
- Alle Dateien, die einem der Muster File entsprechen, werden gelöscht.
-
- Flags: -f Es werden keine Fehlermeldungen bzgl. fehlenden Dateien
- ausgegeben. Außerdem werden auch Dateien, bei denen das
- Read Only-Flag gesetzt ist, gelöscht.
- -i Es wird interaktiv gelöscht, d.h. der Anwender wird bei
- jeder Datei gefragt, ob er diese löschen will oder nicht.
- Als Ja gelten die Eingabe eines Wortes, das mit y oder Y
- beginnt, sowie ein Druck auf ENTER ohne Eingabe.
- Als Nein gilt jede andere Eingabe.
-
- Rückgabewert:
- -1 Aufruffehler
- sonst Anzahl der gelöschten Dateien.
-
- -----
- rmdir - Löschen von Ordnern
-
- Syntax: rmdir Path
-
- Der Ordner Path wird gelöscht. Es dürfen keine Dateien oder Unterordner
- in Path enthalten sein.
-
- Rückgabewert: Anzahl der gelöschten Ordner.
-
- -----
- rpn - SIEHE upn
-
- -----
- rsconf - Konfiguration der RS232-Schnittstelle
-
- Syntax: rsconf [-s(Speed] [(+|-)x] [(+|-)r] [-p(0|1|2)] [-b(Bits)] [-w(Word)]
-
- Die serielle Schnittstelle (Modemport) wird konfiguriert. Die Parameter
- haben folgende Bedeutung:
-
- -s Übertragungsgeschwindigkeit. Mögliche Werte für Speed sind:
- 19200, 9600,4800,3600,2400,2000,1800,1200,600,300,200,
- 150,134,110,75,50 (alles in baud). Der Defaultwert ist 9600.
- -x XON/XOFF wird abgeschaltet (Default).
- +x XON/XOFF wird eingeschaltet.
- -r RTS/CTS wird abgeschaltet (Default).
- +r RTS/CTS wird eingeschaltet.
- -p Parität. Mögliche Angaben sind:
- 0 (keine Parität), 1 (ungerade), 2 (gerade). Der Default-
- wert ist 0.
- -b Anzahl der Start- und Stopbits. Mögliche Angaben:
- Bits Startbits Stopbits Übertragung
- 0 0 0 Synchron (Default)
- 1 1 1 Async.
- 1.5 1 1.5 Async.
- 2 1 2 Async.
- -w Wortlänge. Mögliche Angaben für Word sind:
- 8,7,6,5 (in bits). Der Defaultwert ist 8.
-
- Beispiele:
- rsconf
- stellt ein: 9600 baud, kein XON/XOFF, kein RTS/CTS, keine
- Parität, 0 Start- und Stopbits, Wortlänge 8 bit.
- rsconf -s4800
- wie oben, nur mit 4800 baud.
- rsconf -s19600 +x +r -p1 -b2 -w7
- stellt ein: 19600 baud, XON/XOFF, RTS/CTS, ungerade Pari-
- tät, 1 Startbit, 2 Stopbits, Wortlänge 7 bit.
-
- -----
- scr - Einstellen der Bildschirmfarbe
-
- Syntax: scr [-bwlh]
-
- Einstellen von Hinter- und Vordergrundfarbe sowie der Anzahl der Zeilen auf
- dem Bildschirm (nur in hoher Auflösung sinnvoll).
- Flags: -b (black) Einstellen von dunklem Hinter- und hellem Vorder-
- grund.
- -w (white) Einstellen von hellem Hinter- und dunklem Vorder-
- grund.
- -l (low) Einstellen von 24 Zeilen (normale Schrift).
- -h (high) Einstellen von 48 Zeilen (kleine Schrift).
-
- Für die Einstellung der Zeilenanzahl mit -l und -h gilt:
-
- 1) gon muß aktiv sein.
- 2) Nach der Einstellung wird der Bildschirm gelöscht.
- 3) Die neue Zeilenanzahl wird in der Shellvariablen COLUMNS abgelegt.
- 4) Die Einstellung beruht auf einer undokumentierten VDI-Funktion, zu
- der das Profi-Buch sagt: "Verwendung auf eigene Gefahr". Abstürze sind
- möglich.
-
- Siehe auch: cursor
- keyb
- mouse
-
- -----
- set - Einstellen von Shell-Flags
-
- Syntax: set [-|([+Flags] [-Flags])]
-
- Es wird ein Shell-Flag gesetzt oder gelöscht, oder es wird der Status
- aller Shell-Flags ausgegeben.
- Bei der Verwendung ohne Parameter wird der Status aller Shell-Flags
- mit einer kurzen Erklärung des jeweiligen Flags ausgegeben.
- Bei der Verwendung mit dem Parameter - wird der Status aller Shell-Flags
- in einer Form ausgegeben, die später als Parameter für set benutzt werden
- kann. Dies ist nützlich, wenn in einem Shellscript ein Flag lokal geändert
- werden soll:
- a=`set -`
- set +x
- ................... (irgendwelche Kommandos)
- set $a
- a=
- Der Status der Flags wird in die Variable a eingelesen. Diese Variable wird
- später benutzt, um die Änderung (set +x) ggfs. rückgängig zu machen.
-
- Bei der Verwendung mit einem anderen Parameter als einem einzelnen Minus-
- zeichen wird das entsprechende Flag gesetzt (+) oder zurückgesetzt (-).
- Beispiel: set +x setzt das Flag x.
- set -x löscht das Flag x.
-
- Die folgenden Flags können benutzt werden:
-
- b Wenn dieses Flag gesetzt ist, wird in einer Eingabezeile
- jeder Slash (/) in einen Backslash (\) umgeformt. Dadurch
- ist es möglich, Pfadnamen wie in Unix üblich mit Slashes
- zu trennen (was einfacher ist, da man auf dem ST für einen
- Slash zwei, für einen Backslash aber drei Tasten gleich-
- zeitig drücken muß). Wenn das Flag nicht gesetzt ist, werden
- keine Slashes in Backslashes umgeformt.
- Die Umformung betrifft sämtliche Eingaben, also auch Zu-
- weisungen an Variablen, Zeilen aus Shellscripts etc.
- Nach dem Start der Shell ist dieses Flag gesetzt.
-
- l Wenn dieses Flag gesetzt ist, werden Dateinamen in
- Kleinbuchstaben ausgegeben. Wenn das Flag nicht gesetzt ist,
- werden Dateinamen so ausgegeben, wie sie auf der Diskette
- gespeichert sind (in Großbuchstaben).
- Dieses Flag beeinflußt nicht die Möglichkeit, Dateinamen
- in Kleinbuchstaben einzugeben.
- Nach dem Start der Shell ist dieses Flag gesetzt.
-
- s Wenn dieses Flag gesetzt ist, schreibt die Shell nach dem
- Programmende durch Eingabe von exit oder shutdown oder
- durch Druck auf Ctrl V das aktuelle Directory ($CWD) in
- die Datei $HOME\wdir. Die Datei wird unsichtbar gemacht.
- Wenn das Profile ($HOME\profile) folgende Zeilen enthält:
- set +s
- read a < $HOME\wdir
- cd $a
- dann wird die Shell nach jedem Aufruf auf das Directory
- eingestellt, in dem sie zuletzt verlassen wurde. Dies ist
- sehr sinnvoll beim Einsatz einer Festplatte.
- Nach dem Start der Shell ist dieses Flag nicht gesetzt.
-
- x Vor dem Ausführen einer Binärdatei (PRG, TOS etc.) wird
- das aktuelle Verzeichnis auf das Verzeichnis umgestellt,
- in dem sich die Datei befindet. Nach der Ausführung der
- Datei wird das aktuelle Verzeichnis wieder zurückgesetzt.
- Nach dem Start der Shell ist dieses Flag nicht gesetzt.
-
- c Vor dem Ausführen eines Shellscripts wird das aktuelle
- Verzeichnis auf das Verzeichnis umgestellt, in dem sich
- das Shellscript befindet. Nach dem Ende des Scripts wird
- das aktuelle Verzeichnis wieder zurückgesetzt.
- Nach dem Start der Shell ist dieses Flag nicht gesetzt.
-
- h Wenn dieses Flag gesetzt ist, wird die Datei, aus der bei
- Druck auf Help die Hilfstexte zu den einzelnen Kommandos
- gelesen werden (i.d.R. diese Datei, commands.doc), resident
- im Speicher gehalten. Wenn das Flag nicht gesetzt ist, wird
- die Datei bei jedem Druck auf Help neu geladen. Nach dem
- Start der Shell ist dieses Flag gesetzt, und der einzige
- Grund, es zu löschen, ist Speicherplatzmangel. Um ein resi-
- dentes Helpfile aus dem Speicher zu entfernen, dieses Flag
- löschen (set -h), ein beliebiges Kommando eingeben und Help
- drücken.
- Nach dem Start der Shell ist dieses Flag gesetzt.
-
- u Wenn dieses Flag gesetzt ist, werden die Standard-Streams,
- also die Dateien, die für die Ein-Ausgabe-Umleitung und
- das Pipelining benutzt werden, im Binärmodus geöffnet. Das
- bedeutet, daß in der Ein- und Ausgabe über diese Dateien
- die Übersetzung zwischen CR/LR und CR abgeschaltet wird.
- Nach dem Start der Shell ist dieses Flag nicht gesetzt.
-
- w Wenn dieses Flag gesetzt ist, interpretiert die Shell die
- erweiterten Wildcards * und []. Wenn das Flag nicht gesetzt
- ist, werden alle Wildcards wie unter TOS behandelt. Dies be-
- trifft nur die Angabe von Dateinamen, nicht die sonstige Ver-
- wendung der erweiterten Wildcards z.B. bei Verwendung der
- Help-Taste.
- Nach dem Start der Shell ist dieses Flag gesetzt.
-
- p Wenn dieses Flag gesetzt ist, wird beim Start von Binärpro-
- grammen diesen die Ein/Ausgabeumleitung in der Kommandozeile
- übergeben, und zwar in der Form "<Eingabedatei >Ausgabedatei".
- Vorher wird die Umleitung auf Gemdos-Basis rückgängig gemacht.
- Wenn das Flag nicht gesetzt ist, wird die Ein/Ausgabe aus-
- schließlich mit der Gemdos-Funktion Fforce umgeleitet, den
- Binärprogrammen wird also kein Dateiname übergeben. Dies ist
- die Normaleinstellung, die nur in extremen Sonderfällen ge-
- ändert werden sollte.
- Nach dem Start der Shell ist dieses Flag nicht gesetzt.
-
- -----
- shutdown - Abschalten oder Neubooten von Rechner und Festplatte
-
- Syntax: shutdown [-rRfv]
-
- Wenn eins der Flags -r und -R angegeben ist, wird nach einer Sicherheits-
- abfrage ein Warmstart (bei -r) oder Kaltstart (bei -R) durchgeführt.
-
- Wenn keins der Flags -r und -R angegeben ist, wird der Rechner bereit zum
- Abschalten gemacht. Nach einer Sicherheitsabfrage werden alle Streams ge-
- schlossen sowie Maus und Cursor abgeschaltet.
- Wenn die Datei $HOME\bin\ship.exe vorhanden ist, wird sie geladen und
- ausgeführt (als Binärprogramm). Festplattenbenutzer sollten hierhin
- das SHIP.PRG der Harddisk-Utility-Diskette kopieren. Damit wird auch die
- Festplatte zum Abschalten bereit gemacht.
- Laut Handbuch der Atari-Festplatte kann diese zwar jederzeit abgeschaltet
- werden, und SHIP.PRG braucht nur vor einem Transport gestartet zu werden.
- Trotzdem ist es sinnvoll, die Platte vor jedem Abschalten zu parken, da
- ansonsten der Schreib-Lesekopf wie ein Damoklesschwert über den empfind-
- lichen Daten hängt.
- Wenn weitere Aktionen beim Shutdown erwünscht sind, kann man ein Programm
- schreiben, das diese Aktionen ausführt, und dieses nach $HOME\bin\ship.exe
- kopieren. Dieses Programm kann das Harddisk-Ship-Programm dann per Pexec
- aufrufen.
- Danach wird die Meldung "...shutdown completed..." ausgegeben, und das
- System läuft in eine Endlosschleife, die nur durch einen Reset verlassen
- werden kann.
-
- Wenn beim Laden und Starten von ship.exe ein Fehler auftritt, wird shutdown
- abgebrochen.
-
- Flags:
- -r Warmstart. Die Festplatte wird nicht geparkt, das Programm
- $HOME\bin\ship.exe wird nicht ausgeführt.
- -R Wie -r, aber Kaltstart.
- -f Es erfolgt keine Sicherheitsabfrage. Wenn beim Laden und
- Starten von ship.exe ein Fehler auftritt, wird shutdown
- nicht abgebrochen.
- -v Vor jeder Aktion wird eine entsprechende Meldung auf den
- Bildschirm geschrieben. Ist ohne Wirkung bei -r und -R,
- da es hier keine Aktionen gibt, zu denen sich irgendwelche
- Meldungen lohnen würden, außerdem hätte man nicht viel
- Zeit, die Meldungen zu lesen.
-
- -----
- sleep - eine Weile warten
-
- Syntax: sleep [-sm] n
-
- Dieses Kommando legt eine Pause von n Sekunden ein.
- Wenn gon aktiv ist, wird zum Warten die AES-Funktion evnt_timer aufgerufen,
- wodurch in der Wartezeit die Multitasking-Accessories zum Zuge kommen. Der
- Nachteil ist, daß hier die Wartezeit nicht allzu genau ist; bei aktivem
- gon ergab "time sleep 1" Zeiten zwischen 0.2 und 1.1 Sekunden.
- Wenn gon nicht aktiv ist, wird zum Warten eine Warteschleife benutzt, die
- den 200-Hz-Systemtimer abfragt. Hierbei kommt "time sleep 1" konstant auf
- 1.01 Sekunden.
-
- Flag: -s Es wird n Timer-Zyklen zu je 1/200 Sekunden gewartet.
- "sleep 1" ist also äquivalent zu "sleep -s 200". Es wird
- in einer Warteschleife gewartet, auch wenn gon aktiv ist.
- -m Es wird n Millisekunden gewartet. "sleep 1" ist also auch
- äquivalent zu "sleep -m 1000". Dieses Flag hat nur Sinn,
- wenn gon aktiv ist, ansonsten wird nicht n Millisekunden,
- sondern n/5 Timer-Zyklen zu je 1/200 Sekunden gewartet.
-
- -----
- sort - Sortieren der Standardeingabe
-
- Syntax: sort [-lnrs]
-
- Das sort-Kommando ist ein Filter, d.h. es liest seine Standard-Eingabe
- (StdIn), macht etwas damit und schreibt das Ergebnis zur Standard-Aus-
- gabe (StdOut).
- sort liest Zeilen von StdIn und gibt sie in sortierter Reihenfolge wieder
- aus. Die Maximalanzahl der Zeilen ist 500. (Wer mehr braucht, kann dafür
- den Software-Support benutzen. Die tatsächliche Anzahl der Zeilen einer
- Shellversion kann mit "ver -l" ermittelt werden.)
-
- Flags:
- -l Es wird nach der Länge der Zeilen sortiert, die kürzeste
- Zeile kommt zuerst.
- -n Es wird numerisch sortiert. Die Eingabezeilen werden als
- Zahlenangaben betrachtet (die mit %, 0 und 0x beginnen
- dürfen, um binäre, oktale oder hexadezimale Zahlen zu
- kennzeichnen) und in aufsteigender Reihenfolge sortiert,
- d.h. die kleinste Zahl kommt zuerst.
- -r Die Sortierreihenfolge wird umgekehrt.
- -s Die Strings werden nicht verkürzt. Wenn dieses Flag nicht
- angegeben ist, werden führende und endende Leer- und
- Tabulatorzeichen entfernt. Dies ist notwendig, wenn z.B
- mit "ls | sort -l" eine Dateiliste nach der Länge der
- Dateinamen sortiert werden soll, da in der Ausgabe des
- ls-Kommandos alle Dateinamen mit Leerzeichen auf 14 Zeichen
- Länge gebracht werden.
-
- Wenn keins der Flags l und n angegeben ist, wird nach lexikographischer
- Reihenfolge sortiert (mit der strcmp-Funktion, alle Kleinbuchstaben kommen
- daher nach allen Großbuchstaben).
- Zum Sortieren wird der Quicksort-Algorithmus benutzt.
-
- -----
- tee - T-Kreuzung der Eingabe
-
- Syntax: tee File
-
- StdIn wird nach StdOut und nach File kopiert.
-
- -----
- test - Auswerten von logischen Ausdrücken
-
- Syntax: test Ausdruck
- oder [ Ausdruck ]
-
- Das test-Kommando wird normalerweise in Verbindung mit if benutzt.
- Der Rückgabewert ist 1, wenn der Ausdruck wahr ist, und 0 sonst. test er-
- zeugt keine Ausgabe.
- Der Ausdruck kann eins der folgenden Formate haben:
-
- Dateioperationen:
- -f file Wahr, wenn file existiert.
- -x file Wahr, wenn file ausführbar ist.
- -d file Wahr, wenn file ein Directory ist.
- -g file Wahr, wenn file ein GEM-Programm ist ($GEXT).
- Variablenoperationen:
- +v var Wahr, wenn var der Name einer gesetzten Shellvariablen ist.
- -v var Wahr, wenn es keine Shellvariable namens var gibt.
- Stringoperationen:
- a = b Wahr, wenn die Strings a und b gleich sind.
- a != b Wahr, wenn die Strings a und b ungleich sind.
- a -t b Wahr, wenn das Kommando a auf eine der Typen b ausgeführt
- werden kann. Mögliche Typen sind:
- f Shellfunktion
- i internes Kommando
- s Shellscript
- b Binärprogramm
- n Kommando nicht gefunden
- Es können beliebig viele dieser Typen angegeben werden.
-
- Die folgenden numerischen Operationen vergleichen zwei
- Zahlen x und y:
- x -eq y x = y
- x -ne y x != y
- x -lt y x < y
- x -gt y x > y
- x -le y x <= y
- x -ge y x >= y
-
- Achtung: bei -v und +v muß der Name einer Variablen angegeben werden und
- nicht der Inhalt, also z.B. "test +v TERM" und nicht "test +v $TERM".
-
- Beispiele: siehe if.
-
- -----
- then - SIEHE if
-
- -----
- time - Stoppuhr für Programme
-
- Syntax: time Kommando {Parameter}
-
- Fuehrt Kommando mit den angegebenen Parametern aus und schreibt die
- Laufzeit in Minuten, Sekunden und 1/100 Sekunden auf den Bildschirm.
- Das Ermitteln der Zeit geschieht mittels des 200 Hz-Systemtimers.
-
- -----
- touch - Erneuern oder Anlegen von Dateien
-
- Syntax: touch File {File}
-
- Wenn File bereits existiert, werden Datei-Datum und -Zeit auf die aktuelle
- Systemzeit gesetzt. Wenn File noch nicht existiert, wird eine Datei mit
- dem Namen File angelegt.
-
- Rückgabewert:
- -1 Aufruffehler
- 1 Die Datei ist erzeugt worden.
- 0 Das Dateidatum einer existierenden Datei wurde geändert.
- Hierbei bezieht sich der Wert auf die letzte behandelte Datei.
-
- -----
- tr - Filter
-
- Syntax: tr Filter
-
- Filtert StdIn nach StdOut, abhaengig von den Angaben in Filter.
- Jede Zeile in der Datei Filter (bis auf Leerzeilen oder Zeilen, die mit
- # (Doppelkreuz) anfangen), bestimmt ein Zeichen. Die Zeilen haben den
- Aufbau
-
- s d
-
- wobei s und d in dezimaler, hexadezimaler, oktaler oder Ascii-Schreibweise
- angegebene Werte zwischen 0 und 255 sind.
- Bsp: um in StdIn jedes A (grosses A) in B (grosses B) zu filtern, kann
- z.B. eine der folgenden Zeilen in Filter stehen:
-
- !A !B (Character-Schreibweise)
- 65 !B (dezimale Schreibweise)
- 0x41 !B (hexadezimale Schreibweise)
- 0101 !B (oktale Schreibweise)
-
- Auch B kann in jedem der Fälle in jeder der vier Schreibweisen
- angegeben werden.
-
- Beispiel:
- tr tab.tr <datei.txt >prt:
- filtert die Datei datei.txt mit der Filterdatei tab.tr. Das Ergebnis wird
- zum paralellen Drucker (prt:) geschickt.
-
- Wesentlich leistungsfähiger, aber komplizierter in der Anwendung ist das
- externe Kommando sed.
-
- -----
- trap - Definieren eines Kommandos zum Beenden der Shell
-
- Syntax: trap [-|[+]Kommando {Parameter}]
-
- Es wird ein Shell-Kommando definiert, das nach dem Beenden der Shell mit
- exit oder Control-V aufgerufen wird. Das Trap-Kommando wird nur beim Beenden
- der Shell selber ausgeführt, nicht beim Beenden eines Shell-Scripts mit exit
- oder bei einem shutdown.
- Beim Aufruf ohne Parameter wird das aktuelle Trap-Kommando ausgegeben.
- Beim Aufruf mit einem Minuszeichen wird das Trap-Kommando gelöscht.
- Beim Aufruf mit einem anderen Parameter als einem Minuszeichen wird dieser
- Parameter als Trap-Kommando gespeichert. Wenn der Parameter mit einem Plus-
- zeichen beginnt, wird das Pluszeichen entfernt und der Rest an das bisherige
- Trap-Kommando angehängt.
-
- Beispiele:
- trap echo hallo
- definiert "echo hallo" als das Kommando, das nach
- einem exit ausgeführt werden soll.
- trap
- gibt das zuvor definierte Kommando aus.
- trap -
- löscht die Einstellung.
- trap cls ^; echo Byebye
- löscht beim Ende der Shell den Bildschirm und
- schreibt "Byebye". Nach Eingabe von trap ohne
- Parameter erscheint von da an "cls ; echo Byebye".
- trap cls ; echo Byebye
- löscht beim Ende der Shell nur den Bildschirm,
- "Byebye" wird sofort geschrieben.
- trap `trap` ^; echo Byebye
- hängt das Kommando "echo Byebye" an den aktuellen
- trap-String an.
- trap +echo Byebye
- ebenso.
-
- Eine sinnvolle Anwendung ist
- trap cursor -v
- im Profile. Dadurch wird verhindert, daß nach dem Ende der Shell der
- Cursor auf dem Desktop weiterhin sichtbar ist.
-
- Anmerkung: Wer ständig mit gon arbeitet, braucht goff nicht durch das trap-
- Kommando geben zu lassen, da goff bei Ende der Shell automatisch ausgeführt
- wird.
-
- Siehe auch: exit
- history
-
- -----
- true - Rückgabe von 1
-
- Syntax: true
-
- Dieses Kommando liefert immer eine 1 zurück. Es wird normalerweise mit
- dem while-Kommando geliefert.
-
- Beispiel: Programmieren einer Endlosschleife. Sie kann durch "break" im
- Schleifenrumpf beendet werden.
-
- while true
- do
- ............. (irgendwelche Kommandos)
- done
-
- Siehe auch: while
- if
- false
-
- -----
- type - Ermitteln des Aufrufpfades eines Kommandos
-
- Syntax: type -f Kommando {Kommando}
-
- Es wird ausgegeben, unter welchem Pfad die Shell das Programm zu dem
- angegebenen Kommando aufrufen würde. Wenn es sich um ein internes
- Kommando handelt, erscheint die Meldung "... is a shell builtin".
- Wenn es sich um eine Shellfunktion handelt, erscheint die Meldung
- "... is a function", außerdem wird die Definition der Funktion ausgegeben
- (falls das Flag -f nicht angegeben ist).
-
- Benutzt werden die Shellvariablen $PATH für die Pfade, auf denen das
- Kommando gesucht wird, sowie $XEXT und $SEXT für die zu untersuchenden
- Dateinamen-Extender.
- Beispiel: Es sei d:\shell\bin\test.prg eine Programmdatei. $PATH enthalte
- den Pfad d:\shell\bin, $XEXT enthalte den Extender .prg (z.B.:
- PATH=.,..,d:\shell,d:\shell\bin
- XEXT=.prg,.tos,.ttp
- Dann wird bei der Eingabe von "type test" der vollständige Pfadname
- der Datei test.prg ausgegeben. Wenn das aktuelle Directory d:\shell\bin
- ist, erzeugt "type test" die Ausgabe ".\test.prg".
-
- Flag: -f Wenn dieses Flag angegeben ist, wird bei einer Shell-
- funktion nur die Zeile "... is a function" ausgegeben
- und nicht die vollständige Definition der Funktion.
-
- Siehe auch unten unter "Externe Kommandos".
-
- -----
- upn, rpn - UPN-Rechner incl. Einheitenumrechner
-
- Syntax: upn|rpn [%Fmt] UPN-Ausdruck
-
- Mit diesem Kommando können beliebige mathematische Ausdrücke berechnet wer-
- den. Die Ausdrücke werden in der umgekehrten polnischen Notation (UPN) an-
- gegeben, weil (1) ich ein Fan von HP-Rechnern bin und (2) weil ein Auswerter
- für UPN-Ausdrücke einfacher zu programmieren ist. Wer eher auf die englische
- Schreibweise steht, kann dieses Kommando auch unter dem Namen "rpn" aufrufen.
-
- Ein UPN-Ausdruck ist eine Folge von durch Leerzeichen (:= Space, Tab...)
- getrennten Zahlen oder Operationen.
- Eine Zahl hat das Format
- [-][Vorkommastellen][.Nachkommastellen][E Exponent]
- Jede Zahl, die in einem UPN-Ausdruck steht, wird auf einen internen Stack
- geschoben. Dieser Stack faßt bis zu 32 Zahlen. (Wer mehr braucht, kann den
- Software-Support benutzen, um eine erweiterte Version der Shell zu bekommen.
- Die tatsächliche Größe des Stacks kann mit "ver -l" ermittelt werden.)
- Außerdem gelten die Symbole "pi" und "e" als Zahlen und schieben die Kreis-
- zahl Pi bzw. die Eulersche Zahl e auf den Stack.
- Als Operation gilt alles, was keine Zahl ist. Die Operationen nehmen 0,
- 1 oder 2 Zahlen vom Stack, machen etwas damit und legen das Ergebnis auf
- den Stack zurück.
- Nachdem der ganze UPN-Ausdruck auf diese Weise ausgewertet wurde, wird das
- oberste Stack-Element auf StdOut ausgegeben. Das dabei verwendete Format
- kann angegeben werden; gemeint ist das Format für die printf-Funktion.
- Das Format kann das Ergebnis als long- oder double-Zahl ausgeben, das Resul-
- tat bei Verwendung eines anderen Formats (z.B. %s) ist undefiniert. Näheres
- siehe ein beliebiges C-Handbuch.
- Achtung:
- (1) Es darf nur die Formatangabe gemacht werden, keinen weiteren Text ange-
- ben (z.B. "upn '%Das Ergebnis ist %d' 2 2 +" ist falsch - benutze statt-
- dessen "echo Das Ergebis ist `upn %ld 2 2 +`")
- (2) Bei Integerformaten muß das long-Format angegeben werden, also nicht
- "upn %d ...", sondern "upn %ld ...." (analog für %x). Ebenso sollte nicht %f,
- sondern %lf für Fließkommaformate verwendet werden.
-
- Der verwendete Stack ist global und behält seinen Inhalt über mehrere Auf-
- rufe des upn-Kommandos hinweg. Man kann also z.B. mit "upn 123" eine Zahl
- auf den Stack legen, dann weitere Kommandos ausführen und die Zahl dann
- erst mit einem erneuten upn-Aufruf verarbeiten. Der Stack faßt maximal
- 32 Zahlen. (Wer mehr braucht: Software-Support benutzen... Die tatsächliche
- Stackgröße einer Shellversion kann mit "ver -l" ermittelt werden)
-
- Eine Liste aller verfügbaren UPN-Funktionen findet sich in dieser Datei
- zu dem Stichwort "upnfkt".
-
- Eine komfortable Schnittstelle zum upn-Kommando ist das externe Kommando
- calc (siehe dort).
-
- Rückgabewert: Der ganzzahlige Anteil des obersten Stack-Elements (x).
-
-
- Siehe auch: upnfkt
- calc (externes Kommando)
-
- -----
- upnfkt - Funktionen des UPN-Rechners
-
- Zur Bedienung des UPN-Rechners siehe das Stichwort upn. Dieser Abschnitt
- erklärt alle Operationen, die im UPN-Rechner zur Verfügung stehen.
-
- Im folgenden bedeutet x die oberste und y die zweitoberste Zahl auf dem
- Stack. "x := x+y" bedeutet, daß zwei Zahlen vom Stack genommen und addiert
- und daß das Ergebnis wieder auf den Stack gelegt wird.
-
- Folgende Operationen sind vorhanden:
-
- +,-,*,/,\ x := y +-*/ x (Grundrechenarten) (*)
- % x := y % x (Modulo)
- ++ x := x+1 (Inkrement)
- -- x := x-1 (Dekrement)
- chs x := -x (Vorzeichenwechsel)
- rcp x := 1/x (Reziprokwert)
- log x := log (y) x (Log. zur Basis y)
- ln x := ln x (Log. zur Basis e)
- lg x := lg x (Log. zur Basis 10)
- ld x := ld x (Log. zur Basis 2)
- deg x := x * (180/Pi) (Umrechnung Rad.->Deg.) (**)
- grad x := x * (200/Pi) (Umrechnung Rad.->Grad) (**)
- sin x := sin x (Sinus)
- asin x := arc sin x (Arcus-Sinus)
- cos x := cos x (Cosinus)
- acos x := arc cos x (Arcus-Cosinus)
- tan x := tan x (Tangens)
- atan x := arc tan x (Arcus-Tangens)
- sqrt x := sqrt x (Quadratwurzel)
- sqr x := x*x (Quadrat)
- exp x := e hoch x
- exp2 x := 2 hoch x
- exp10 x := 10 hoch x
- abs x := |x| (Betrag)
- sign x := signum x (Vorzeichen: -1, 0, 1)
- min x := min {x,y} (Minimum)
- max x := max {x,y} (Maximum)
- fact x := x! (Fakultät)
- int x := int x (Vorkommastellen)
- frac x := frac x (Nachkommastellen)
- rand x aus (0,1) (Zufallszahl)
- rnd x := x gerundet auf 1. Vorkommastelle
-
- Außerdem gibt es die folgenden Einheiten-Umrechenfunktionen, die jeweils
- x umrechnen:
-
- in2mm mm2in (inch <-> Millimeter)
- ft2m m2ft (Foot <-> Meter)
- mi2km km2mi (Meilen <-> Kilometer)
- m2yd yd2m (Meter <-> Yards)
- m2nmi nmi2m (Meter <-> nautische Meilen)
- m2rod rod2m (Meter <-> Rod, was immer das ist)
- m2pc pc2m (Meter <-> Parsec)
- gal2l l2gal (Gallonen <-> Liter)
- lb2kg kg2lb (engl. Pfund <-> Kilogramm)
- kg2oz oz2kg (Kilogramm <-> Unzen)
- kg2ozt ozt2kg (Kilogramm <-> Troy-Unzen)
- kg2u u2kg (Kilogramm <-> Units (atomare Masseeinheit))
- kg2slug slug2kg (Kilogramm <-> Slug)
- f2c c2f (Fahrenheit <-> Celsius)
- c2k k2c (Celsius <-> Kelvin)
- ms2mph mph2ms (Meter/Sekunde <-> Meilen pro Stunde)
-
- Die folgenden Größenordnungsumrechenfunktionen rechnen x in die jeweilige
- Größenordnung um. Um 2500 Gramm in Kilogramm umzurechnen, lautet der Aufruf
- also "upn 2500 kilo".
-
- 10 hoch i: 10 hoch -i: i:
- exa atto 18
- peta femto 15
- tera pico 12
- giga nano 9
- mega micro 6
- kilo milli 3
- hecta centi 2
- deca deci 1
-
- Die folgenden Größenordnungen arbeiten auf Basis 2, z.B. um Bytes in Kilo-
- bytes umzurechnen.
-
- 2 hoch i: 2 hoch -i: i:
- bgiga bnano 1000
- bmega bmicro 100
- bkilo bmilli 10
-
- In den Umrechenfunktionen steht die 2 übrigens für das englische Wort "to",
- das genauso ausgesprochen wird wie "two"; "in2mm" liest man also
- "inch to millimeter".
- Quellen für die Umrechnungsfaktoren: die Taschenrechner Hewlett-Packard 28C
- und Commodore SR9190R.
-
- Zusätzlich gibt es die folgenden Sonderfunktionen:
-
- help Es wird eine Liste aller verfügbarer Operationen ausgegeben. Hinter
- den Operationen erscheint in Klammern die Anzahl der Zahlen, die
- für die Operation vom Stack genommen werden.
-
- list Gibt den aktuellen Inhalt des Stacks auf dem Bildschirm aus.
-
- swap Vertauscht die obersten beiden Stackelemente (x und y).
-
- dup dupliziert das oberste Stackelement.
-
- pop Löscht das oberste Element vom Stack.
-
- clr Löscht den gesamten Stack.
-
-
- ANMERKUNGEN:
-
- (*) Zur Division kann sowohl der Slash (/) als auch der Backslash (\)
- benutzt werden. Dadurch ist es möglich, den UPN-Rechner zu benutzen, auch
- wenn das Shell-Flag -b gesetzt ist, das alle Slashes in der Eingabe in
- Backslashes umformt.
-
- (**) Die trigonometrischen Funktionen wie sin, cos etc. arbeiten alle
- im Gradmaß (Kreis = 2 Pi Grad). Mit den Operationen deg und grad können
- Winkelangaben in Altgrad (Kreis = 360 Grad) und Neugrad (Kreis = 400 Grad)
- umgerechnet werden.
-
-
- Beispiele:
- 1) Ausrechnen von 3+4:
- upn 3 4 +
- 2) Berechnen der Oberfläche eines Kreises mit Radius 10:
- upn 10 sqr pi *
- 3) Berechnen der Oberfläche eines Kreises mit Radius 123 mm in Zoll (inch):
- upn 123 sqr pi * mm2in
- 4) Umrechnen von 36 Grad Celsius (Temperatur in Aachen am 12.8.1990) in
- Fahrenheit:
- upn 36 c2f
- 5) Ab welcher Temperatur in Kelvin fängt Papier an zu brennen?
- upn 451 f2c c2k
- 6) Wieviele Kilometer haben 25 nautische Meilen?
- upn 25 nmi2m kilo
- 7) Wieviele Gramm hat eine Unze?
- upn 1 oz2kg milli
- 8) Wieviele Bytes hat ein Kilobyte?
- upn 1 bkilo
- 9) Und wieviele Bits hat ein Mega-ST 4?
- upn 4 bmega 8 *
- 9) Benutzung des Formatstrings: Ausgabe der Fakultät von 12 in Hex:
- upn %lx 12 fact
- 10) Shellvariablen können auch beutzt werden:
- echo Geben Sie zwei Zahlen ein:
- read x
- read y
- echo Die größere der Zahlen ist ^c
- upn %ld $x $y max
- 11) Auflisten aller Operationen:
- upn help
- 12) Zählen der Operationen des UPN-Rechners:
- upn %ld `upn help | wc -w` 2 /
- (zur Erklärung: "upn help" gibt für jede Operation zwei Worte aus, nämlich
- den Namen der Operation und die Anzahl der Parameter. "upn help | wc -w"
- zählt die Worte. Mit dem Ergebnis wird upn nochmals aufgerufen, um es durch
- 2 zu teilen und damit die Anzahl der Operationen zu ermitteln.)
- 13) Wieviel Speicherplatz in Kilobytes belegt eine Shell?
- upn %ld `mem` `sh mem` - bkilo
-
- -----
- vars - Ausgabe der Shellvariablen
-
- Syntax: vars [-axs]
-
- Gibt eine Liste der vom Anwender angelegten Shellvariablen nach StdOut.
- Die Ausgabe besteht aus dem Variablennamen, dem aktuellen Wert und dem
- Variablenstatus. Folgende Status-Angaben sind moeglich:
-
- USR Die Variable wurde vom Anwender oder von einem Shell-Script
- angelegt oder veraendert.
- SYS Die Variable wird vom System fuer das System angelegt.
- R/O Der Wert der Variablen kann nicht veraendert werden und
- die Variable kann nicht geloescht werden (siehe readonly).
- EXP Die Variable ist exportiert worden (siehe export).
-
- Flags: -a Es werden alle Shellvariablen (auch die Systemvariablen)
- ausgegeben.
- -x Die Variablen werden im Deklarationsformat, als in der
- Form "NAME=WERT" ausgegeben. Der Variablenstatus wird
- nicht ausgegeben. Dieses Format kann in ein Shellscript
- übernommen werden.
- -s Es wird eine Statistik ueber den freien und belegten Platz
- in der Variablentabelle ausgegeben.
-
- Beispiele:
-
- Anlegen einer Variablen:
- VAR=Hallo
-
- "vars" erzeugt eine Ausgabe der Art:
-
- VAR =Hallo USR
-
- "vars -x" erzeugt eine Ausgabe der Art:
-
- VAR=Hallo
-
- -----
- ver - Anzeige diverser Versionsnummern
-
- Syntax: ver [-oclgtdmMa]
-
- Wenn kein Flag angegeben ist, wird -oc angenommen.
-
- Die Flags haben folgende Bedeutung:
-
- -o Ausgabe der Versionsnummer der Shell.
- -c Ausgabe von Datum und Uhrzeit des Kompilierens der Shell. Damit
- lassen sich verschiedene Upgrades innerhalb einer Versionsnummer
- unterscheiden.
- -l Es wird eine genauere Analyse der Möglichkeiten der vorliegenden
- Shell-Version ausgegeben, die Angaben über die Maximalanzahl der
- Funktionen und Variablen, die Größe des UPN-Stacks usw. enthält.
- -g Ausgabe der Gemdos-Versionsnummer. Sie wird mit der Gemdos-Funktion
- Sversion festgestellt und im Format Hauptnummer.Unternummer ausge-
- geben.
- -t Ausgabe der TOS-Version. Stammt aus dem TOS-Systemheader.
- -d Ausgabe des TOS-Datums. Stammt ebenfalls aus dem TOS-Systemheader
- und wird wie dort im Format Monat/Tag/Jahr ausgegeben.
- -m Ausgabe der Versionsnummer des installierten MiNT. Wenn kein MiNT
- installiert ist, erscheint "none".
- -M Wie -m, aber es wenn MiNT nicht installiert ist, wird keine Ausgabe
- erzeugt.
- -a Es erfolgen alle diese Ausgaben (außer -M und -l).
-
- Beispiel: "ver -a" ergibt auf einem 1040ST mit TOS 1.4 und ohne MiNT
- folgende Ausgabe:
-
- Okami Shell 1.2+ [-o]
- compiled Dec. 22, 1990 21:09 [-c]
- GEMDOS Version 0.21 [-g]
- TOS Version 1.4 [-t]
- TOS Date 04/06/1989 [-d]
- MiNT Version: none [-m]
-
- In eckigen Klammern jeweils das Flag, das die betreffende Zeile erzeugt (er-
- scheint nicht in der Ausgabe).
- Bei den Flags -o und -c erscheinen natürlich andere Werte, je nach der ver-
- wendeten Version der Shell.
-
- "ver -l" gibt bei der Standardversion folgende Ausgabe:
-
- Max. # of variables 100
- Max. # of functions 100
- Max. # of nested while's 16
- Max. # of lines for sort 500
- Max. filespec length 80
- Max. length of input line 400
- Length of history buffer 100
- Length of UPN stack 32
- Version supports MiNT
-
- "Max. # of nested while's" ist die Maximalanzahl der while-Schleifen, die
- ineinander geschachtelt werden können.
- "Max. # of lines for sort" ist die Maximalanzahl der Zeilen, die mit dem
- internen Kommando sort sortiert werden können.
- "Max. filespec length" ist die maximale Länge eines Dateinamens incl. Pfad.
- "Max. length of input line" ist die maximale Länge einer Eingabezeile nach
- der Expansion von Variablen, Command Substitution usw.
- "Length of history buffer" ist die Anzahl der Eingabezeilen, die in dem
- Ringpuffer der Tastatur-History gespeichert werden können.
-
- -----
- virus - Aufspüren und Entfernen von Bootsektorviren
-
- Syntax: virus [-xvsi] {drive}
-
- Es wird der Bootsektor von jedem angegebenen Laufwerk eingelesen und auf
- Ausführbarkeit getestet. Ein Bootsektor ist ausführbar, wenn seine Prüf-
- summe 0x1234 beträgt; nur in diesem Fall kann ein Virus sich beim Booten
- dieser Diskette oder Partition im Speicher einnisten. Auf Wunsch wird ein
- ausführbarer Bootsektor nicht-ausführbar gemacht.
- Wenn kein Laufwerk angegeben ist, wird nur Laufwerk A: untersucht.
-
- Flags:
- -x Ein ausführbarer Bootsektor wird nicht-ausführbar gemacht,
- indem das letzte Byte des Bootsektors inkrementiert wird.
- -v Es erscheinen Meldungen über Prüfsumme und Ausführbarkeit
- zu jedem untersuchten Laufwerk. Wenn dieses Flag nicht an-
- gegeben ist, werden nur Meldungen über ausführbare Boot-
- sektoren ausgegeben.
- -s Der Bootsektor wird nicht untersucht, sondern nach StdOut
- geschrieben.
- -i Der Bootsektor wird nicht von dem angegebenen Laufwerk,
- sondern von StdIn eingelesen. Wenn der eingelesene Boot-
- sektor ausführbar ist und -x gesetzt ist, wird der Boot-
- sektor auf das angegebene Laufwerk geschrieben.
-
- Beispiele:
- virus
- untersucht Laufwerk A: und gibt eine Warnung aus, wenn der
- Bootsektor ausführbar ist, ändert ihn aber nicht. Dieses
- Kommando kann in Shellscripts stehen, da es sich im
- Normalfall (Bootsektor ist nicht ausführbar) "unsichtbar"
- verhält.
- virus B: C:
- dasselbe für Laufwerk B: und Partition C:.
- virus bc
- genauso wie das vorige Beispiel.
- virus -s a: >boot.dat
- der Bootsektor von Laufwerk A: wird in die Datei boot.dat
- geschrieben.
- virus -i -x a: <boot.dat
- der zuvor gesicherte Bootsektor wird auf Ausführbarkeit
- untersucht und ggfs. nicht-ausführbar gemacht.
- virus -s c: | hd
- es wird ein Hexdump des Bootsektors von Partition C: er-
- zeugt.
-
- Rückgabewert:
- -1 Aufruffehler
- 0 Der Bootsektor ist nicht ausführbar (gemacht worden).
- 1 Der Bootsektor ist (immer noch!) ausführbar.
- Hierbei bezieht sich dieser Wert auf das zuletzt untersuchte Laufwerk.
-
- Die Idee zu diesem Kommando stammt aus dem Data-Becker-Buch "Atari ST intern
- Band 2" von Martin Pauly, allerdings habe ich die Flags -s und -i hinzu-
- gefügt und die Einleseroutinen geändert, damit auch Festplattenpartitionen
- untersucht werden können.
-
- -----
- wc - Word Count
-
- Syntax: wc [-lwcn] {File}
-
- Es werden die Anzahl der Zeilen, Worte und Zeichen der angegebenen Datei
- oder von StdIn ausgegeben. Ein Wort wird durch Leerzeichen, Tabs oder
- Newline-Zeichen begrenzt.
-
- Flags: -l Ausgabe der Anzahl der Zeilen
- -w Ausgabe der Anzahl der Worte
- -c Ausgabe der Anzahl der Zeichen
- -n Ausgabe des jeweiligen Dateinamens
- Wenn keine Flags angegeben sind, gelten alle Flags als aktiviert.
-
- Beispiel:
- 1) Ausgabe der Anzahlen der Zeilen und Zeichen aller C-Quell- und Header-
- dateien im aktuellen Directory:
- wc -lcn *.c *.h
-
- 2) Ausgabe der Anzahl der internen Kommandos:
- cmds | wc -l
-
- Rückgabewert:
- -1 Aufruffehler
- sonst die Anzahl der gezählten Dateien.
-
- -----
- what - Identifizieren von Dateien
-
- Syntax: what [-s] {Datei}
-
- Dieses Kommando ist in der Unix-Welt sehr beliebt und gehört dort zu dem
- Sourcecode-Control-System (SCCS). Der Sinn ist, eine jede Datei, egal ob
- Ascii oder binär, anhand eines speziellen Codes identifizieren zu können.
- Dieser Code steht irgendwo in der Datei, gefolgt von einer Zeichenkette, die
- die Datei, den Autor und die Version kennzeichnet. Der Code ist @(#) (At
- Klammer auf Doppelkreuz Klammer zu).
- Das Kommando what sucht in jeder angegebenen Datei (oder in StdIn, wenn keine
- Datei angegeben ist) nach der Zeichenkette @(#) und gibt alles aus, was
- dahinter bis zum nächsten doppelten Anführungszeichen ("), Größerzeichen (>),
- Zeilenende (\n) oder Nullbyte (\0) kommt.
- Die übliche Art, diesen Identifikationsstring in einem Programm unterzubringen,
- ist folgende Zeile kurz nach Dateibeginn:
-
- static char _M_ID_[]="@(#) Okami Shell 1.2 - cmds5.c";
-
- Die Zeichenkette "@(#) Okami Shell 1.2 - cmds5.c" steht dann sowohl in der
- C-Quelldatei als auch in dem O-File und dem ausführbaren Programm. Wenn alle
- Module eines Programms auf diese Weise gekennzeichnet sind, kann man mit
- what eine Liste aller Module, auch Librarymodule, bekommen, aus denen ein
- Programm zusammengesetzt ist.
- Bei den Programmen der Okami-Shell funktioniert what leider nur mit den Shell-
- scripts, da der Compiler festgestellt hat, daß die Variable _M_ID_ nirgend-
- wo im Programm benutzt wird, also hat er sie kurzerhand wegoptimiert. Mög-
- licherweise arbeiten aber nicht alle Compiler derart radikal.
- Wer die Quellen der Okami-Shell hat, kann mit what die Namen der in den einzel-
- nen Modulen enthaltenen Funktionen ermitteln (z.B. "what cmds*.c").
-
- Flag: -s Wenn dieses Flag angegeben ist, wird nur das erste @(#) in
- der Datei gesucht.
-
- Beispiel:
- what *.sh erzeugt eine Liste der Versionen aller Shellscripts
- what -s doc/* eine Art Inhaltsverzeichnis der Anleitungsdateien
-
- -----
- while , do, continue, break, done - Ausführen von Kommandos in einer Schleife
-
- Syntax: while Kommando1
- [do]
- {Kommandos2|continue|break}
- done
-
- Das while-Konstrukt darf nur in Shell-Scripts stehen. Die Ergebnisse bei
- der Eingabe von der Tastatur oder einer Schnittstelle sind undefiniert
- (was völlig natürlich ist).
-
- Die Zeilen zwischen "while" und "done" werden ausgeführt, bis Kommando1
- den Rückgabewert 0 liefert. In diesem Fall wird mit der Ausführung in der
- "done" folgenden Zeile fortgefahren.
- Das Kommando "break" beendet die while-Schleife augenblicklich. Es darf in
- einem if-fi-Konstrukt stehen (was es normalerweise auch tut).
- Das Kommando "continue" springt zurück zum zugehörigen "while"-Kommando.
- Der aktuelle Schleifendurchlauf wird also beendet, und es beginnt ein
- neuer Schleifendurchlauf. Ebenso wie "break" darf auch "continue" in einem
- if-fi-Konstrukt stehen.
- Die Wirkung von "break" und "continue" ist demnach identisch mit der von
- "break" und "continue" in der Programmiersprache C.
- Das Kommando "do" ist ohne jede Wirkung. Es kann aus Kompatibilitäts- oder
- aus kosmetischen Gründen benutzt werden.
-
- Typische Kandidaten für "Kommando1" sind true, false und test (bzw. "[").
-
- Beispiele:
-
- 1) Wiederholen von Anweisungen:
-
- while [ $x != abc ]
- do
- echo Bitte abc eingeben.
- read x
- done
-
- Die Zeile "do" kann ebensogut weggelassen werden.
-
-
- 2) Dateien mit der Fileselect-Box einlesen, bis der Anwender "Abbruch"
- anklickt:
-
- while true
- fsel *.* . BUTTON
- if [ $BUTTON = 0 ]
- break
- fi
- done
-
- "while true" ist also eine Endlosschleife, die nur durch break verlassen
- werden kann.
-
-
- 3) Wie 2), aber es werden nur Dateien akzeptiert, die noch nicht existieren.
- Wenn eine bereits existierende Datei angewählt wurde (was mit [ -f $FILE ]
- herausgefunden wird), wird die while-Schleife mit "continue" von vorne
- begonnen.
-
- while true
- # den Dateinamen in die Variable FILE einlesen
- FILE=`fsel *.* datei.txt BUTTON`
- if [ $BUTTON = 0 ]
- break
- fi
- if [ -f $FILE ]
- continue
- fi
- ...................... (mache was mit $FILE)
- done
-
-
- 4) Eine Variable eingeben lassen, solange bis sie wirklich einen Wert
- enthält.
-
- while [ -v VARIABLE ]
- echo Bitte geben Sie die Variable ein.
- read VARIABLE
- done
-
-
- Siehe auch: test
- true
- false
- if
-
- -----
- xargs - Eingabe als Parameter für andere Kommandos
-
- Syntax: xargs [Kommando {Parameter}]
-
- Liest Zeilen von StdIn und führt das angegebene Kommando mit den angegebenen
- Parametern und den eingelesenen Zeilen aus. Wenn kein Kommando angegeben
- ist, wird als Default "echo" benutzt.
- Wenn Kommando oder Parameter die Zeichenkette "{}" (öffnende und schließende
- geschwungene Klammer) enthalten, wird die von StdIn eingelesene Zeile
- anstelle dieser Zeichenkette eingesetzt. Ansonsten wird die eingelesene
- Zeile nach einem Leerzeichen an den Parameterstring angehängt.
-
- Beispiele:
- ls *.sh | xargs .
- führt alle Shellscripts im aktuellen Verzeichnis aus.
- ls *.c | xargs echo Die Datei {} ist da
- Erzeugt als Ausgabe z.B.:
- Die Datei sh.c ist da
- Die Datei cmds.c ist da
- Die Datei cmds2.c ist da
- usw.
- find e:\ *.dup | xargs rm -f
- Löscht alle *.dup-Dateien auf Laufwerk E: ohne Berücksichti-
- gung von Readonly-Dateien (rm -f).
- cmds | xargs echo {}"^t"^c
- Gibt die Namen aller interner Kommandos in mehreren Spalten
- auf dem Bildschirm aus. (Das geht einfacher mit "cmds -C")
-
- ---------------------------------------------------------------------------
-
- 2) Externe Kommandos:
-
- Wenn beim Shell-Prompt ein Kommando eingegeben wird, das keinem internen
- Kommando entspricht, wird eine Datei mit dem entsprechenden Namen unter
- allen in der Shell-Variablen PATH enthaltenen Pfaden gesucht. Wenn dort
- eine Datei mit dem angegebenen Namen und einem der in $XEXT angegebenen
- Extendern existiert, wird sie als Binärdatei aufgerufen. Wenn dort eine
- Datei mit dem angegebenen Namen und einem der in $SEXT angegebenen Exten-
- dern existiert, wird sie als Shellscript ausgeführt.
-
- Beispiel: Es sei
- PATH=.,d:\bin
- XEXT=.prg,.tos
- SEXT=.sh
-
- Nach Eingabe des Kommandos "test" werden die folgenden Dateien gesucht, die
- erste gefundene Datei wird ausgeführt:
-
- test.prg
- test.tos
- test.sh
- d:\bin\test.prg
- d:\bin\test.tos
- d:\bin\test.sh
-
- Die Dateien, die auf .prg oder .tos enden, werden als Binärdateien aufge-
- rufen.
- Die Dateien, die auf .sh enden, werden als Shellscripts ausgeführt.
- Wenn mehrere der angeführten Dateien existieren, wird die nur erste
- gefundene Datei ausgeführt.
- Durch Eingabe von "type test" kann festgestellt werden, welche Datei
- durch das Kommando test ausgeführt würde oder ob es sich um ein internes
- Kommando handelt.
-
- In der Shell-Variablen GEXT werden analog zu XEXT und SEXT Extender gespei-
- chert, die angeben, welche Dateinen als GEM-Programme gestartet werden.
- GEM-Programme werden über die Shellfunktion gemexec gestartet. Diese Funktion
- kann vom Anwender frei verändert werden und darüber entscheiden, welche Aktio-
- nen sie vor und nach dem Start des Programms ausführt oder ob sie es überhaupt
- startet. Siehe hierzu auch den Abschnitt zu gemexec unter den internen Komman-
- dos.
-
- GEXT hat Wirkung auf alle Binärprogramme, also auf solche, die über die
- Eingabe ihres Namens und mit XEXT gestartet werden, als auch auf solche,
- die mit dem exec-Kommando aufgerufen werden. GEXT ist ohne Wirkung für
- Shell-Scripts, auch wenn einer der Extender in GEXT mit einem der Extender
- in SEXT übereinstimmt.
-
- Folgende Werte sind nach Start der Shell voreingestellt:
- PATH=.,..,$HOME,$HOME\bin
- XEXT=.prg,.tos,.ttp,.app
- SEXT=.sh
- GEXT=.prg
- Die Variablen können in der Datei profile verändert oder erweitert werden.
-
- Außerdem ist es möglich, den vollen Pfadnamen zum Aufruf anzugeben. Dabei
- muß jedoch auch der Extender mit angegeben werden. Das Kommando wird nur
- ausgeführt, wenn der Extender einem der in $XEXT oder $SEXT angeführten
- entspricht. (Dies entspricht dem Datei-Attribut "Executable" unter Unix.
- In der Okami-Shell wird dieses Attribut durch die Shell-Variablen XEXT und
- SEXT simuliert.)
-
-
- Der Quellcode sämtlicher externer Kommandos gehört zum Lieferumfang.
-
- Folgende externe Kommandos werden mitgeliefert:
-
-
- -----
- calc - Schnittstelle zum UPN-Rechner
-
- Datei: calc.sh
- Syntax: calc
-
- Dieses Shellscript dient dazu, das interne Kommando upn benutzerfreundlich
- aufzurufen. Es erscheint das Prompt:
- upn >
- Nun können beliebige upn-Ausdrücke eingegeben werden (siehe das interne
- Kommando upn). Jeder Ausdruck wird mit ENTER abgeschlossen. Es können auch
- unvollständige Ausdrücke angegeben werden, z.B. sind äquivalent:
-
- upn > 2 3 * 4 +
-
- und
- upn > 2 3
- upn > *
- upn > 4 +
-
- In der Eingabe kann die Zeichenkette "$_" (Dollar Underscore) benutzt wer-
- den, um das Ergebnis der letzten Eingabezeile zu repräsentieren. Beispiel:
-
- upn > 17 4 +
- upn > pi 2 * sin $_ /
-
- berechnet erst 17+4, das Ergebnis wird in der zweiten Zeile benutzt. Achtung:
- in $_ wird immer nur der ganzzahlige Anteil gespeichert.
-
- Durch Eingabe von clr wird der Stack gelöscht, durch Eingabe von list wird
- der Inhalt des Stacks ausgegeben.
-
- Das Programm wird beendet durch Eingabe von q. Die Shellvariable "_" (Under-
- score) enthält dann den ganzzahligen Anteil des letzten Ergebnisses.
-
- Siehe auch: upn
-
- -----
- contact - Ausdrucken der Pd-Software-Kontaktkarte
-
- Datei: contact.sh
- Syntax: contact
-
- Durch die Kontaktkarte können Anwender von Pd-Software den Programmieren
- ihre Meinung über ein Programm mitteilen und sich über neuere Programm-
- versionen informieren lassen. Die Verwendung solcher Kontaktkarten
- wurde in der Zeitschrift pd-Szene Nr. 2 vorgeschlagen.
-
- Die Kontaktkarte wird ueber den Hardcopy-Drucker als Postkarte ausgedruckt
- und muss nur noch gefaltet und zusammengeklebt werden (evtl. mit einem
- Fotokopierer verkleinern).
-
- -----
- format - Formatierten von Disketten
-
- Datei: format.ttp
- Source: format.c
- Syntax: format [-s(SPT)] [-t(TPD)] [-1] [-i(Interleave)] [-v(Virgin)]
- [-n(VersNr)] [-N] [-B] [-x] [-q] [-l(Diskname)][Drive]
-
- Vor dem Formatieren erfolgt eine Sicherheitsabfrage. Nach Eingabe von y
- wird formatiert, nach einer anderen Eingabe oder Druck auf ENTER wird das
- Programm abgebrochen.
- Ebenso erfolgt eine Sicherheitsabfrage bei eigenartigen Werten (z.B.
- anderen Laufwerksnummern als A: und B: etc.)
-
- Die Voreinstellungen der einzelnen Flags sind:
- format -s9 -t80 -i1 -v0xe5e5 -n0x1000001 A:
-
-
- Flags:
- -s Anzahl der Sektoren pro Track. Default: 9.
- -t Anzahl der Tracks pro Seite. Default: 80.
- -1 Wenn angegeben, wird die Diskette einseitig formatiert.
- Wenn nicht angegeben, wird die Diskette zweiseitig
- formatiert. Default: zweiseitig.
- -i Die Anzahl der physikalischen Sektoren zwischen zwei
- logischen Sektoren. Default: 1.
- -v Der Wert, der in die formatierten Sektoren geschrieben
- wird. Normalerweise 0xe5e5. Unabhängig von dieser Ein-
- stellung werden die Spuren 0 und 1 immer mit Nullen ge-
- füllt.
- -n Die Versionsnummer, die in den Bootsektor geschrieben
- wird. Werte größer als 0x1000000 ergeben eine zufällige
- Versionsnummer.
- -N Es wird kein Bootsektor angelegt.
- -B Es wird nicht formatiert (nur Bootsektor).
- -x Der Bootsektor wird ausführbar gemacht.
- -q Es erfolgen keine Sicherheitsabfragen.
- -l Es wird der angegebene Diskettenname (Volume-Label) erzeugt.
- Drive Das zu formatierende Laufwerk. Es gilt nur der erste
- Buchstabe, d.h. es sind äquivalent:
- format A:
- format a:
- format a
- format abcdefg
- format
- Default ist Laufwerk A:.
-
-
- Beispiele:
- 1) format
- Formatiert die Diskette in Laufwerk A: mit 2 Seiten, 80 Tracks pro
- Seite, 9 Sektoren pro Track mit Interleave 1 und Virgin 0xe5e5. Es
- wird ein nicht-ausführbarer Bootsektor angelegt. Es wird kein Dis-
- kettenname erzeugt
- => der Standardaufruf zum Formatieren von Disketten.
- 2) format B: -ldisk1
- Formatiert die Diskette in Laufwerk B: mit den unter 1) beschrie-
- benen Standardwerten. Außerdem wird der Diskettenname "disk1" er-
- zeugt.
- 3) format -s10 B:
- Formatiert die Diskette in Laufwerk B: mit 10 Sektoren pro Track.
- 4) format -s10 -q B:
- Wie 3), aber ohne Sicherheitsabfrage.
- 5) format -s10 -v0 -N
- Formatiert die Diskette in Laufwerk A: mit 10 Sektoren pro Track.
- Die Sektoren werden mit Nullen gefüllt. Es wird kein Bootsektor
- angelegt. Es erfolgt eine Sicherheitsabfrage wegen eines unge-
- wöhnlichen Virgin-Wertes (-v0).
- 6) format -s10 -v0 -N -q
- Wie 5), aber ohne Sicherheitsabfrage.
-
-
- Vorsicht:
- Die Parameter -i (Interleave) und -v (Virgin) sollten nur in
- Sonderfällen geändert werden. Der Interleave-Faktor muß mit der
- Anzahl der Sektoren pro Track teilerfremd sein (wird vom Pro-
- gramm nicht überprüft!!!!)
-
-
- Laufzeit:
- format (Standardwerte zweiseitig)
- dauert ca. 1 Minute 38 Sekunden
- format -1 (Standardwerte einseitig)
- dauert ca. 50 Sekunden
- format -B (Anlegen eines Bootsektors ohne Formatierung)
- dauert ca. 2 Sekunden
- (Alle Zeiten incl. Ladezeit des format-Programms von Festplatte,
- beim Aufruf mit -q [ohne Sicherheitsabfrage]. Gemessen mit dem
- time-Kommando.)
-
- -----
- gem - Benutzung der Accessories
-
- Datei: gem.prg
- Source: gem.lst
- Syntax: gem
-
- Es wird ein GEM-Desktop mit Menüzeile angezeigt. Von dieser Menüzeile aus
- können die installierten Accessories benutzt werden. Nach Anklicken des
- Menüpunktes "EXIT" erscheint wieder das Shell-Prompt.
-
- -----
- print - Ausdrucken einer Datei
-
- Dateien: print.sh, $HOME\print.tr
- Syntax: print Filename
-
- Die angegebene Datei wird mit der tr-Tabelle print.tr gefiltert und über
- die parallele Druckerschnittstelle (PRT:) ausgegeben.
- WICHTIG: Die Datei print.tr muß sich im Home-Verzeichnis befinden, also
- in dem Verzeichnis, in dem sich auch profile und i.d.R. sh.ttp befinden.
-
- Es werden folgende Zeichen gefiltert:
-
- 'Ä' zu '['
- 'Ö' zu '\'
- 'Ü' zu ']'
- 'ä' zu '{'
- 'ö' zu '|'
- 'ü' zu '}'
- 'ß' zu '~'
-
- Damit ist ein korrektes Ausdrucken von Umlauten gewährleistet.
- Wenn diese Konvertierung nicht erwünscht ist, kann eine Datei mit
- cat Datei >PRT:
- ausgedruckt werden.
- Wenn auf dem seriellen Drucker gedruckt werden soll, muß in der Datei
- print.sh PRT: zu AUX: geändert werden.
-
- -----
- sed - Der Stream-Editor
-
- Dateien: sed.ttp, sed/callsed.sh, sed/*
- Syntax: sed [-n] [-g] [-e script] [-f sfile] {file}
- (siehe sed/sed.doc)
-
- Der Stream-Editor ist ein universelles Programm, das seine Standardeingabe
- liest, alles mögliche damit macht und das Ergebnis wieder auf die Standard-
- ausgabe schreibt. Es handelt sich bei dem Programm um Gnu-sed, einen Teil des
- Gnu-Betriebssystems. Es ist Public Domain, solange es mit Hinweis auf den Autor
- und mitsamt den Quellen verbreitet wird. Es unterliegt den Gnu-Lizenzbestim-
- mungen.
- Der Autor ist Eric S. Raymond, die Quellen und alle zugehörigen Beispieldateien
- befinden sich in dem Ordner sed. Ich habe die Quellen geringfügig angepaßt,
- um sie auf meinem System kompilieren zu können. Eine ausführliche Anleitung
- befindet sich in der Datei sed.doc, mitsamt einem Beispiel-sed-Script, das
- ein Pascalprogramm in C umformt. Außerdem befindet sich im sed-Ordner ein
- Okami-Shellscript namens callsed.sh, das benutzt werden kann, um sed trotz
- gesetzem b- und x-Flag (Slash->Backslash und cd vor Binärprogrammen) aufzu-
- rufen. Man gibt also nicht ein:
- sed ausdruck
- , sondern
- callsed 'ausdruck'
- . Die Anführungszeichen sorgen dafür, daß die Slashes und sonstige Sonder-
- zeichen wie Circumflex (^) in ausdruck nicht von der Shell interpretiert wer-
- den.
- Man kann auch schlauer vorgehen und callsed.sh umbennen in sed.sh und sed.ttp
- in einen Ordner namens $HOME/bin/sed kopieren sowie den Aufruf in callsed.sh
- anpassen, dann kann man auch "sed 'ausdruck'" eingeben, weil dann das Script
- und nicht das Programm gestartet wird.
-
- -----
- showpic - Anzeigen von Screenformat-Bildern
-
- Datei: showpic.sh
- Syntax: showpic
-
- Dieses Shellscript ist ein Beispiel zur Programmierung der Shell. Es läßt
- den Anwender eine Datei in einer Fileselect-Box auswählen und bestimmt
- anhand des Dateinamen-Extenders, ob es sich um eine Doodle-Datei (.PIC,
- Dateilänge 32000 Bytes) oder eine Degas-Datei (.PI3, 32066 Bytes) handelt,
- und bestimmt entsprechend die Länge des Dateiheaders (Doodle 0, Degas 34
- Bytes). Wenn der Extender weder .PIC noch .PI3 ist, muß der Anwender die
- Länge des Headers eingeben.
- Danach wird das Bild geladen und angezeigt. Nach einem Druck auf ENTER wird
- der Bildschirm gelöscht, und das ganze beginnt von vorne, bis der Anwender
- "Abbruch" anwählt.
-
- Das Script demonstriert die vielfältigen Möglichkeiten der Shell-Pro-
- grammierung mit Variablen, Pipes, Eingaben, Shellflags und dem if- und
- while-Kommando.
-
- ----------------------------------------------------------------------------
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- An diese Stelle können weitere Erklärungen hinzugefügt werden, die bei Druck
- auf Help nach einem Kommando erscheinen sollen, z.B. Erklärungen zu eigenen
- externen Kommandos oder Abschnitte aus okami.doc. Bitte das Format beachten:
- - Zeile aus fünf Minuszeichen
- - Zeile, die mit dem Stichwort beginnt
- - Erklärung geht bis zur nächsten Zeile aus fünf Minuszeichen (exkl.)
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-